combinatorics.simple_graph.triangle.basic
⟷
Mathlib.Combinatorics.SimpleGraph.Triangle.Basic
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(last sync)
More lemmas about is_clique
, is_n_clique
, edge_set
. Also define clique_free_on
, a local version of clique_free
.
@@ -42,7 +42,8 @@ G.delete_far (λ H, H.clique_free 3) $ ε * (card α^2 : ℕ)
lemma far_from_triangle_free_iff :
G.far_from_triangle_free ε ↔
- ∀ ⦃H⦄, H ≤ G → H.clique_free 3 → ε * (card α^2 : ℕ) ≤ G.edge_finset.card - H.edge_finset.card :=
+ ∀ ⦃H : simple_graph _⦄ [decidable_rel H.adj], by exactI
+ H ≤ G → H.clique_free 3 → ε * (card α^2 : ℕ) ≤ G.edge_finset.card - H.edge_finset.card :=
delete_far_iff
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -82,7 +82,7 @@ variable [Nonempty α]
theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.CliqueFree 3) : ε ≤ 0 :=
by
have := h₀ (empty_subset _)
- rw [coe_empty, Finset.card_empty, cast_zero, delete_edges_empty_eq] at this
+ rw [coe_empty, Finset.card_empty, cast_zero, delete_edges_empty_eq] at this
exact nonpos_of_mul_nonpos_left (this h₁) (cast_pos.2 <| sq_pos_of_pos Fintype.card_pos)
#align simple_graph.far_from_triangle_free.nonpos SimpleGraph.FarFromTriangleFree.nonpos
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3365b20c2ffa7c35e47e5209b89ba9abdddf3ffe
@@ -5,7 +5,7 @@ Authors: Yaël Dillies, Bhavik Mehta
-/
import Combinatorics.SimpleGraph.Clique
-#align_import combinatorics.simple_graph.triangle.basic from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
+#align_import combinatorics.simple_graph.triangle.basic from "leanprover-community/mathlib"@"3365b20c2ffa7c35e47e5209b89ba9abdddf3ffe"
/-!
# Triangles in graphs
@@ -51,8 +51,8 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
#print SimpleGraph.farFromTriangleFree_iff /-
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
- ∀ ⦃H⦄,
- H ≤ G → H.CliqueFree 3 → ε * (card α ^ 2 : ℕ) ≤ G.edgeFinset.card - H.edgeFinset.card :=
+ ∀ ⦃H : SimpleGraph _⦄ [DecidableRel H.Adj],
+ H ≤ G → H.clique_free 3 → ε * (card α ^ 2 : ℕ) ≤ G.edge_finset.card - H.edge_finset.card :=
deleteFar_iff
#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iff
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2022 Yaël Dillies, Bhavik Mehta. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yaël Dillies, Bhavik Mehta
-/
-import Mathbin.Combinatorics.SimpleGraph.Clique
+import Combinatorics.SimpleGraph.Clique
#align_import combinatorics.simple_graph.triangle.basic from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -60,11 +60,11 @@ theorem farFromTriangleFree_iff :
alias ⟨far_from_triangle_free.le_card_sub_card, _⟩ := far_from_triangle_free_iff
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
-#print SimpleGraph.farFromTriangleFree.mono /-
-theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
+#print SimpleGraph.FarFromTriangleFree.mono /-
+theorem FarFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
G.FarFromTriangleFree δ :=
hε.mono <| mul_le_mul_of_nonneg_right h <| cast_nonneg _
-#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.mono
+#align simple_graph.far_from_triangle_free.mono SimpleGraph.FarFromTriangleFree.mono
-/
#print SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty' /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -57,7 +57,7 @@ theorem farFromTriangleFree_iff :
#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iff
-/
-alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
+alias ⟨far_from_triangle_free.le_card_sub_card, _⟩ := far_from_triangle_free_iff
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
#print SimpleGraph.farFromTriangleFree.mono /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2022 Yaël Dillies, Bhavik Mehta. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yaël Dillies, Bhavik Mehta
-
-! This file was ported from Lean 3 source module combinatorics.simple_graph.triangle.basic
-! leanprover-community/mathlib commit ee05e9ce1322178f0c12004eb93c00d2c8c00ed2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Combinatorics.SimpleGraph.Clique
+#align_import combinatorics.simple_graph.triangle.basic from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
+
/-!
# Triangles in graphs
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -51,49 +51,63 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
#align simple_graph.far_from_triangle_free SimpleGraph.FarFromTriangleFree
-/
+#print SimpleGraph.farFromTriangleFree_iff /-
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
∀ ⦃H⦄,
H ≤ G → H.CliqueFree 3 → ε * (card α ^ 2 : ℕ) ≤ G.edgeFinset.card - H.edgeFinset.card :=
deleteFar_iff
#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iff
+-/
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
+#print SimpleGraph.farFromTriangleFree.mono /-
theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
G.FarFromTriangleFree δ :=
hε.mono <| mul_le_mul_of_nonneg_right h <| cast_nonneg _
#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.mono
+-/
+#print SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty' /-
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
(H.cliqueFinset 3).Nonempty :=
nonempty_of_ne_empty <|
H.cliqueFinset_eq_empty_iff.Not.2 fun hH' => (hG.le_card_sub_card hH hH').not_lt hcard
#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'
+-/
variable [Nonempty α]
+#print SimpleGraph.FarFromTriangleFree.nonpos /-
theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.CliqueFree 3) : ε ≤ 0 :=
by
have := h₀ (empty_subset _)
rw [coe_empty, Finset.card_empty, cast_zero, delete_edges_empty_eq] at this
exact nonpos_of_mul_nonpos_left (this h₁) (cast_pos.2 <| sq_pos_of_pos Fintype.card_pos)
#align simple_graph.far_from_triangle_free.nonpos SimpleGraph.FarFromTriangleFree.nonpos
+-/
+#print SimpleGraph.CliqueFree.not_farFromTriangleFree /-
theorem CliqueFree.not_farFromTriangleFree (hG : G.CliqueFree 3) (hε : 0 < ε) :
¬G.FarFromTriangleFree ε := fun h => (h.nonpos hG).not_lt hε
#align simple_graph.clique_free.not_far_from_triangle_free SimpleGraph.CliqueFree.not_farFromTriangleFree
+-/
+#print SimpleGraph.FarFromTriangleFree.not_cliqueFree /-
theorem FarFromTriangleFree.not_cliqueFree (hG : G.FarFromTriangleFree ε) (hε : 0 < ε) :
¬G.CliqueFree 3 := fun h => (hG.nonpos h).not_lt hε
#align simple_graph.far_from_triangle_free.not_clique_free SimpleGraph.FarFromTriangleFree.not_cliqueFree
+-/
+#print SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty /-
theorem FarFromTriangleFree.cliqueFinset_nonempty (hG : G.FarFromTriangleFree ε) (hε : 0 < ε) :
(G.cliqueFinset 3).Nonempty :=
nonempty_of_ne_empty <| G.cliqueFinset_eq_empty_iff.Not.2 <| hG.not_cliqueFree hε
#align simple_graph.far_from_triangle_free.clique_finset_nonempty SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty
+-/
end SimpleGraph
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -78,7 +78,7 @@ variable [Nonempty α]
theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.CliqueFree 3) : ε ≤ 0 :=
by
have := h₀ (empty_subset _)
- rw [coe_empty, Finset.card_empty, cast_zero, delete_edges_empty_eq] at this
+ rw [coe_empty, Finset.card_empty, cast_zero, delete_edges_empty_eq] at this
exact nonpos_of_mul_nonpos_left (this h₁) (cast_pos.2 <| sq_pos_of_pos Fintype.card_pos)
#align simple_graph.far_from_triangle_free.nonpos SimpleGraph.FarFromTriangleFree.nonpos
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -36,7 +36,7 @@ This module defines and proves properties about triangles in simple graphs.
open Finset Fintype Nat
-open Classical
+open scoped Classical
namespace SimpleGraph
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -51,12 +51,6 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
#align simple_graph.far_from_triangle_free SimpleGraph.FarFromTriangleFree
-/
-/- warning: simple_graph.far_from_triangle_free_iff -> SimpleGraph.farFromTriangleFree_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toHasLe.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
-but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
-Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
∀ ⦃H⦄,
@@ -64,29 +58,14 @@ theorem farFromTriangleFree_iff :
deleteFar_iff
#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iff
-/- warning: simple_graph.far_from_triangle_free.le_card_sub_card -> SimpleGraph.farFromTriangleFree.le_card_sub_card is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toHasLe.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
-but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
-Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
-/- warning: simple_graph.far_from_triangle_free.mono -> SimpleGraph.farFromTriangleFree.mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} {δ : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LE.le.{u2} 𝕜 (Preorder.toHasLe.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) δ ε) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G δ)
-but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} {δ : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) δ ε) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G δ)
-Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.monoₓ'. -/
theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
G.FarFromTriangleFree δ :=
hε.mono <| mul_le_mul_of_nonneg_right h <| cast_nonneg _
#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.mono
-/- warning: simple_graph.far_from_triangle_free.clique_finset_nonempty' -> SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
(H.cliqueFinset 3).Nonempty :=
@@ -96,12 +75,6 @@ theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFro
variable [Nonempty α]
-/- warning: simple_graph.far_from_triangle_free.nonpos -> SimpleGraph.FarFromTriangleFree.nonpos is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toHasLe.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) ε (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))))
-but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (SimpleGraph.CliqueFree.{u2} α G (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) ε (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))))
-Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.nonpos SimpleGraph.FarFromTriangleFree.nonposₓ'. -/
theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.CliqueFree 3) : ε ≤ 0 :=
by
have := h₀ (empty_subset _)
@@ -109,32 +82,14 @@ theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.C
exact nonpos_of_mul_nonpos_left (this h₁) (cast_pos.2 <| sq_pos_of_pos Fintype.card_pos)
#align simple_graph.far_from_triangle_free.nonpos SimpleGraph.FarFromTriangleFree.nonpos
-/- warning: simple_graph.clique_free.not_far_from_triangle_free -> SimpleGraph.CliqueFree.not_farFromTriangleFree is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LT.lt.{u2} 𝕜 (Preorder.toHasLt.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Not (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε))
-but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.CliqueFree.{u2} α G (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))) ε) -> (Not (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε))
-Case conversion may be inaccurate. Consider using '#align simple_graph.clique_free.not_far_from_triangle_free SimpleGraph.CliqueFree.not_farFromTriangleFreeₓ'. -/
theorem CliqueFree.not_farFromTriangleFree (hG : G.CliqueFree 3) (hε : 0 < ε) :
¬G.FarFromTriangleFree ε := fun h => (h.nonpos hG).not_lt hε
#align simple_graph.clique_free.not_far_from_triangle_free SimpleGraph.CliqueFree.not_farFromTriangleFree
-/- warning: simple_graph.far_from_triangle_free.not_clique_free -> SimpleGraph.FarFromTriangleFree.not_cliqueFree is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toHasLt.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Not (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
-but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))) ε) -> (Not (SimpleGraph.CliqueFree.{u2} α G (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
-Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.not_clique_free SimpleGraph.FarFromTriangleFree.not_cliqueFreeₓ'. -/
theorem FarFromTriangleFree.not_cliqueFree (hG : G.FarFromTriangleFree ε) (hε : 0 < ε) :
¬G.CliqueFree 3 := fun h => (hG.nonpos h).not_lt hε
#align simple_graph.far_from_triangle_free.not_clique_free SimpleGraph.FarFromTriangleFree.not_cliqueFree
-/- warning: simple_graph.far_from_triangle_free.clique_finset_nonempty -> SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toHasLt.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α G _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
-but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))) ε) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α G _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
-Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty SimpleGraph.FarFromTriangleFree.cliqueFinset_nonemptyₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty (hG : G.FarFromTriangleFree ε) (hε : 0 < ε) :
(G.cliqueFinset 3).Nonempty :=
nonempty_of_ne_empty <| G.cliqueFinset_eq_empty_iff.Not.2 <| hG.not_cliqueFree hε
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -85,10 +85,7 @@ theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε
#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.mono
/- warning: simple_graph.far_from_triangle_free.clique_finset_nonempty' -> SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toHasLt.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
-but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+<too large>
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -53,7 +53,7 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
/- warning: simple_graph.far_from_triangle_free_iff -> SimpleGraph.farFromTriangleFree_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toHasLe.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
@@ -66,7 +66,7 @@ theorem farFromTriangleFree_iff :
/- warning: simple_graph.far_from_triangle_free.le_card_sub_card -> SimpleGraph.farFromTriangleFree.le_card_sub_card is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toHasLe.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
@@ -75,7 +75,7 @@ alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
/- warning: simple_graph.far_from_triangle_free.mono -> SimpleGraph.farFromTriangleFree.mono is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} {δ : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) δ ε) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G δ)
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} {δ : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LE.le.{u2} 𝕜 (Preorder.toHasLe.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) δ ε) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G δ)
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} {δ : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) δ ε) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G δ)
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.monoₓ'. -/
@@ -86,7 +86,7 @@ theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε
/- warning: simple_graph.far_from_triangle_free.clique_finset_nonempty' -> SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toHasLt.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
@@ -101,7 +101,7 @@ variable [Nonempty α]
/- warning: simple_graph.far_from_triangle_free.nonpos -> SimpleGraph.FarFromTriangleFree.nonpos is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) ε (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toHasLe.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) ε (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (SimpleGraph.CliqueFree.{u2} α G (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) ε (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.nonpos SimpleGraph.FarFromTriangleFree.nonposₓ'. -/
@@ -114,7 +114,7 @@ theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.C
/- warning: simple_graph.clique_free.not_far_from_triangle_free -> SimpleGraph.CliqueFree.not_farFromTriangleFree is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Not (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LT.lt.{u2} 𝕜 (Preorder.toHasLt.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Not (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.CliqueFree.{u2} α G (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))) ε) -> (Not (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε))
Case conversion may be inaccurate. Consider using '#align simple_graph.clique_free.not_far_from_triangle_free SimpleGraph.CliqueFree.not_farFromTriangleFreeₓ'. -/
@@ -124,7 +124,7 @@ theorem CliqueFree.not_farFromTriangleFree (hG : G.CliqueFree 3) (hε : 0 < ε)
/- warning: simple_graph.far_from_triangle_free.not_clique_free -> SimpleGraph.FarFromTriangleFree.not_cliqueFree is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Not (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toHasLt.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Not (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))) ε) -> (Not (SimpleGraph.CliqueFree.{u2} α G (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.not_clique_free SimpleGraph.FarFromTriangleFree.not_cliqueFreeₓ'. -/
@@ -134,7 +134,7 @@ theorem FarFromTriangleFree.not_cliqueFree (hG : G.FarFromTriangleFree ε) (hε
/- warning: simple_graph.far_from_triangle_free.clique_finset_nonempty -> SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α G _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toHasLt.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α G _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))) ε) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α G _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty SimpleGraph.FarFromTriangleFree.cliqueFinset_nonemptyₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -55,7 +55,7 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
@@ -68,7 +68,7 @@ theorem farFromTriangleFree_iff :
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
@@ -88,7 +88,7 @@ theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (Semiring.toNatCast.{u1} 𝕜 (DivisionSemiring.toSemiring.{u1} 𝕜 (Semifield.toDivisionSemiring.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -53,7 +53,7 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
/- warning: simple_graph.far_from_triangle_free_iff -> SimpleGraph.farFromTriangleFree_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
@@ -66,7 +66,7 @@ theorem farFromTriangleFree_iff :
/- warning: simple_graph.far_from_triangle_free.le_card_sub_card -> SimpleGraph.farFromTriangleFree.le_card_sub_card is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
@@ -86,7 +86,7 @@ theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε
/- warning: simple_graph.far_from_triangle_free.clique_finset_nonempty' -> SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (AddCommGroupWithOne.toAddGroupWithOne.{u2} 𝕜 (Ring.toAddCommGroupWithOne.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/b19481deb571022990f1baa9cbf9172e6757a479
@@ -55,7 +55,7 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
@@ -68,7 +68,7 @@ theorem farFromTriangleFree_iff :
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
@@ -88,7 +88,7 @@ theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Sym2.instRelDecidable'.{u2} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -55,7 +55,7 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
@@ -68,7 +68,7 @@ theorem farFromTriangleFree_iff :
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
@@ -88,7 +88,7 @@ theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7780 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7782 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7780 x._@.Mathlib.Data.Fintype.Basic._hyg.7782) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -55,7 +55,7 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
@@ -68,7 +68,7 @@ theorem farFromTriangleFree_iff :
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
@@ -88,7 +88,7 @@ theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7771 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7773 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7771 x._@.Mathlib.Data.Fintype.Basic._hyg.7773) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -55,7 +55,7 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
@@ -68,7 +68,7 @@ theorem farFromTriangleFree_iff :
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
@@ -88,7 +88,7 @@ theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7741 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7743 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7741 x._@.Mathlib.Data.Fintype.Basic._hyg.7743) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -55,7 +55,7 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
@@ -68,7 +68,7 @@ theorem farFromTriangleFree_iff :
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
@@ -88,7 +88,7 @@ theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε
lean 3 declaration is
forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
but is expected to have type
- forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7698 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7700 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7698 x._@.Mathlib.Data.Fintype.Basic._hyg.7700) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yaël Dillies, Bhavik Mehta
! This file was ported from Lean 3 source module combinatorics.simple_graph.triangle.basic
-! leanprover-community/mathlib commit cd7f0626a0b04be1dda223a26123313514a55fb4
+! leanprover-community/mathlib commit ee05e9ce1322178f0c12004eb93c00d2c8c00ed2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Combinatorics.SimpleGraph.Clique
/-!
# Triangles in graphs
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
A *triangle* in a simple graph is a `3`-clique, namely a set of three vertices that are
pairwise adjacent.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -40,12 +40,20 @@ namespace SimpleGraph
variable {α 𝕜 : Type _} [Fintype α] [LinearOrderedField 𝕜] {G H : SimpleGraph α} {ε δ : 𝕜} {n : ℕ}
{s : Finset α}
+#print SimpleGraph.FarFromTriangleFree /-
/-- A simple graph is *`ε`-triangle-free far* if one must remove at least `ε * (card α)^2` edges to
make it triangle-free. -/
def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
(G.DeleteFar fun H => H.CliqueFree 3) <| ε * (card α ^ 2 : ℕ)
#align simple_graph.far_from_triangle_free SimpleGraph.FarFromTriangleFree
+-/
+/- warning: simple_graph.far_from_triangle_free_iff -> SimpleGraph.farFromTriangleFree_iff is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
+but is expected to have type
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, Iff (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iffₓ'. -/
theorem farFromTriangleFree_iff :
G.FarFromTriangleFree ε ↔
∀ ⦃H⦄,
@@ -53,14 +61,32 @@ theorem farFromTriangleFree_iff :
deleteFar_iff
#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iff
+/- warning: simple_graph.far_from_triangle_free.le_card_sub_card -> SimpleGraph.farFromTriangleFree.le_card_sub_card is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u1} α}}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.CliqueFree.{u1} α H (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)))))))))
+but is expected to have type
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (forall {{H : SimpleGraph.{u2} α}}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.CliqueFree.{u2} α H (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)))))))))
+Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_cardₓ'. -/
alias far_from_triangle_free_iff ↔ far_from_triangle_free.le_card_sub_card _
-#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.FarFromTriangleFree.le_card_sub_card
-
-theorem FarFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
+#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
+
+/- warning: simple_graph.far_from_triangle_free.mono -> SimpleGraph.farFromTriangleFree.mono is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} {δ : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) δ ε) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G δ)
+but is expected to have type
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} {δ : 𝕜}, (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) δ ε) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G δ)
+Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.monoₓ'. -/
+theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
G.FarFromTriangleFree δ :=
hε.mono <| mul_le_mul_of_nonneg_right h <| cast_nonneg _
-#align simple_graph.far_from_triangle_free.mono SimpleGraph.FarFromTriangleFree.mono
-
+#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.mono
+
+/- warning: simple_graph.far_from_triangle_free.clique_finset_nonempty' -> SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {H : SimpleGraph.{u1} α} {ε : 𝕜}, (LE.le.{u1} (SimpleGraph.{u1} α) (SimpleGraph.hasLe.{u1} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (HSub.hSub.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHSub.{u2} 𝕜 (SubNegMonoid.toHasSub.{u2} 𝕜 (AddGroup.toSubNegMonoid.{u2} 𝕜 (AddGroupWithOne.toAddGroup.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α G (SimpleGraph.fintypeEdgeSet.{u1} α G (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (Finset.card.{u1} (Sym2.{u1} α) (SimpleGraph.edgeFinset.{u1} α H (SimpleGraph.fintypeEdgeSet.{u1} α H (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b))))))) (HMul.hMul.{u2, u2, u2} 𝕜 𝕜 𝕜 (instHMul.{u2} 𝕜 (Distrib.toHasMul.{u2} 𝕜 (Ring.toDistrib.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))) ε ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat 𝕜 (HasLiftT.mk.{1, succ u2} Nat 𝕜 (CoeTCₓ.coe.{1, succ u2} Nat 𝕜 (Nat.castCoe.{u2} 𝕜 (AddMonoidWithOne.toNatCast.{u2} 𝕜 (AddGroupWithOne.toAddMonoidWithOne.{u2} 𝕜 (NonAssocRing.toAddGroupWithOne.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2)))))))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat (Monoid.Pow.{0} Nat Nat.monoid)) (Fintype.card.{u1} α _inst_1) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α H a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
+but is expected to have type
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {H : SimpleGraph.{u2} α} {ε : 𝕜}, (LE.le.{u2} (SimpleGraph.{u2} α) (SimpleGraph.instLESimpleGraph.{u2} α) H G) -> (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (HSub.hSub.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHSub.{u1} 𝕜 (Ring.toSub.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α G (SimpleGraph.fintypeEdgeSet.{u2} α G (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)))))) (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (Finset.card.{u2} (Sym2.{u2} α) (SimpleGraph.edgeFinset.{u2} α H (SimpleGraph.fintypeEdgeSet.{u2} α H (Quotient.fintype.{u2} (Prod.{u2, u2} α α) (instFintypeProd.{u2, u2} α α _inst_1 _inst_1) (Sym2.Rel.setoid.{u2} α) (fun (a : Prod.{u2, u2} α α) (b : Prod.{u2, u2} α α) => Classical.propDecidable ((fun (x._@.Mathlib.Data.Fintype.Basic._hyg.7705 : Prod.{u2, u2} α α) (x._@.Mathlib.Data.Fintype.Basic._hyg.7707 : Prod.{u2, u2} α α) => HasEquiv.Equiv.{succ u2, 0} (Prod.{u2, u2} α α) (instHasEquiv.{succ u2} (Prod.{u2, u2} α α) (Sym2.Rel.setoid.{u2} α)) x._@.Mathlib.Data.Fintype.Basic._hyg.7705 x._@.Mathlib.Data.Fintype.Basic._hyg.7707) a b))) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b))))))) (HMul.hMul.{u1, u1, u1} 𝕜 𝕜 𝕜 (instHMul.{u1} 𝕜 (NonUnitalNonAssocRing.toMul.{u1} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))))) ε (Nat.cast.{u1} 𝕜 (NonAssocRing.toNatCast.{u1} 𝕜 (Ring.toNonAssocRing.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 (Field.toDivisionRing.{u1} 𝕜 (LinearOrderedField.toField.{u1} 𝕜 _inst_2))))) (HPow.hPow.{0, 0, 0} Nat Nat Nat (instHPow.{0, 0} Nat Nat instPowNat) (Fintype.card.{u2} α _inst_1) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α H _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α H a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'ₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
(H.cliqueFinset 3).Nonempty :=
@@ -70,6 +96,12 @@ theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFro
variable [Nonempty α]
+/- warning: simple_graph.far_from_triangle_free.nonpos -> SimpleGraph.FarFromTriangleFree.nonpos is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LE.le.{u2} 𝕜 (Preorder.toLE.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) ε (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))))
+but is expected to have type
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (SimpleGraph.CliqueFree.{u2} α G (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LE.le.{u1} 𝕜 (Preorder.toLE.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) ε (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))))
+Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.nonpos SimpleGraph.FarFromTriangleFree.nonposₓ'. -/
theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.CliqueFree 3) : ε ≤ 0 :=
by
have := h₀ (empty_subset _)
@@ -77,14 +109,32 @@ theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.C
exact nonpos_of_mul_nonpos_left (this h₁) (cast_pos.2 <| sq_pos_of_pos Fintype.card_pos)
#align simple_graph.far_from_triangle_free.nonpos SimpleGraph.FarFromTriangleFree.nonpos
+/- warning: simple_graph.clique_free.not_far_from_triangle_free -> SimpleGraph.CliqueFree.not_farFromTriangleFree is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Not (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε))
+but is expected to have type
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.CliqueFree.{u2} α G (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))) ε) -> (Not (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε))
+Case conversion may be inaccurate. Consider using '#align simple_graph.clique_free.not_far_from_triangle_free SimpleGraph.CliqueFree.not_farFromTriangleFreeₓ'. -/
theorem CliqueFree.not_farFromTriangleFree (hG : G.CliqueFree 3) (hε : 0 < ε) :
¬G.FarFromTriangleFree ε := fun h => (h.nonpos hG).not_lt hε
#align simple_graph.clique_free.not_far_from_triangle_free SimpleGraph.CliqueFree.not_farFromTriangleFree
+/- warning: simple_graph.far_from_triangle_free.not_clique_free -> SimpleGraph.FarFromTriangleFree.not_cliqueFree is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Not (SimpleGraph.CliqueFree.{u1} α G (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
+but is expected to have type
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))) ε) -> (Not (SimpleGraph.CliqueFree.{u2} α G (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.not_clique_free SimpleGraph.FarFromTriangleFree.not_cliqueFreeₓ'. -/
theorem FarFromTriangleFree.not_cliqueFree (hG : G.FarFromTriangleFree ε) (hε : 0 < ε) :
¬G.CliqueFree 3 := fun h => (hG.nonpos h).not_lt hε
#align simple_graph.far_from_triangle_free.not_clique_free SimpleGraph.FarFromTriangleFree.not_cliqueFree
+/- warning: simple_graph.far_from_triangle_free.clique_finset_nonempty -> SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {𝕜 : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : LinearOrderedField.{u2} 𝕜] {G : SimpleGraph.{u1} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u1} α], (SimpleGraph.FarFromTriangleFree.{u1, u2} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u2} 𝕜 (Preorder.toLT.{u2} 𝕜 (PartialOrder.toPreorder.{u2} 𝕜 (OrderedAddCommGroup.toPartialOrder.{u2} 𝕜 (StrictOrderedRing.toOrderedAddCommGroup.{u2} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u2} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u2} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u2} 𝕜 _inst_2))))))) (OfNat.ofNat.{u2} 𝕜 0 (OfNat.mk.{u2} 𝕜 0 (Zero.zero.{u2} 𝕜 (MulZeroClass.toHasZero.{u2} 𝕜 (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} 𝕜 (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} 𝕜 (NonAssocRing.toNonUnitalNonAssocRing.{u2} 𝕜 (Ring.toNonAssocRing.{u2} 𝕜 (DivisionRing.toRing.{u2} 𝕜 (Field.toDivisionRing.{u2} 𝕜 (LinearOrderedField.toField.{u2} 𝕜 _inst_2))))))))))) ε) -> (Finset.Nonempty.{u1} (Finset.{u1} α) (SimpleGraph.cliqueFinset.{u1} α G _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u1} α G a b)) (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))
+but is expected to have type
+ forall {α : Type.{u2}} {𝕜 : Type.{u1}} [_inst_1 : Fintype.{u2} α] [_inst_2 : LinearOrderedField.{u1} 𝕜] {G : SimpleGraph.{u2} α} {ε : 𝕜} [_inst_3 : Nonempty.{succ u2} α], (SimpleGraph.FarFromTriangleFree.{u2, u1} α 𝕜 _inst_1 _inst_2 G ε) -> (LT.lt.{u1} 𝕜 (Preorder.toLT.{u1} 𝕜 (PartialOrder.toPreorder.{u1} 𝕜 (StrictOrderedRing.toPartialOrder.{u1} 𝕜 (LinearOrderedRing.toStrictOrderedRing.{u1} 𝕜 (LinearOrderedCommRing.toLinearOrderedRing.{u1} 𝕜 (LinearOrderedField.toLinearOrderedCommRing.{u1} 𝕜 _inst_2)))))) (OfNat.ofNat.{u1} 𝕜 0 (Zero.toOfNat0.{u1} 𝕜 (CommMonoidWithZero.toZero.{u1} 𝕜 (CommGroupWithZero.toCommMonoidWithZero.{u1} 𝕜 (Semifield.toCommGroupWithZero.{u1} 𝕜 (LinearOrderedSemifield.toSemifield.{u1} 𝕜 (LinearOrderedField.toLinearOrderedSemifield.{u1} 𝕜 _inst_2))))))) ε) -> (Finset.Nonempty.{u2} (Finset.{u2} α) (SimpleGraph.cliqueFinset.{u2} α G _inst_1 (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u2} α a b)) (fun (a : α) (b : α) => Classical.propDecidable (SimpleGraph.Adj.{u2} α G a b)) (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3))))
+Case conversion may be inaccurate. Consider using '#align simple_graph.far_from_triangle_free.clique_finset_nonempty SimpleGraph.FarFromTriangleFree.cliqueFinset_nonemptyₓ'. -/
theorem FarFromTriangleFree.cliqueFinset_nonempty (hG : G.FarFromTriangleFree ε) (hε : 0 < ε) :
(G.cliqueFinset 3).Nonempty :=
nonempty_of_ne_empty <| G.cliqueFinset_eq_empty_iff.Not.2 <| hG.not_cliqueFree hε
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -32,7 +32,7 @@ This module defines and proves properties about triangles in simple graphs.
open Finset Fintype Nat
-open Classical
+open scoped Classical
namespace SimpleGraph
@[gcongr]
tags around (#9393)
import Mathlib.Tactic.GCongr.Core
to Algebra/Order/Ring/Lemmas
.@[gcongr]
tags next to the lemmas.See Zulip thread
Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com>
@@ -7,6 +7,7 @@ import Mathlib.Algebra.GroupPower.Order
import Mathlib.Combinatorics.SimpleGraph.Clique
import Mathlib.Data.Finset.Sym
import Mathlib.Tactic.GCongr
+import Mathlib.Tactic.Positivity
#align_import combinatorics.simple_graph.triangle.basic from "leanprover-community/mathlib"@"3365b20c2ffa7c35e47e5209b89ba9abdddf3ffe"
@@ -35,7 +36,7 @@ open Classical
namespace SimpleGraph
-variable {α 𝕜 : Type*} [Fintype α] [LinearOrderedField 𝕜] {G H : SimpleGraph α} {ε δ : 𝕜} {n : ℕ}
+variable {α 𝕜 : Type*} [Fintype α] [LinearOrderedRing 𝕜] {G H : SimpleGraph α} {ε δ : 𝕜} {n : ℕ}
{s : Finset α}
/-- A simple graph is *`ε`-far from triangle-free* if one must remove at least
positivity
extensions (#10140)
The goal here is to have access to positivity
earlier in the import hierarchy
@@ -3,6 +3,7 @@ Copyright (c) 2022 Yaël Dillies, Bhavik Mehta. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yaël Dillies, Bhavik Mehta
-/
+import Mathlib.Algebra.GroupPower.Order
import Mathlib.Combinatorics.SimpleGraph.Clique
import Mathlib.Data.Finset.Sym
import Mathlib.Tactic.GCongr
Sym2
's global Prod
setoid instance, use s(x, y)
notation for unordered pairs (#8729)
The Sym2
type used a global setoid instance on α × α
so that ⟦(x, y)⟧
could stand for an unordered pair using standard Quotient
syntax. This commit refactors Sym2
to not use Quotient
and instead use its own s(x, y)
notation. One benefit to this is that this notation produces a term with type Sym2
rather than Quotient
.
The Fintype
instance for Sym2
is in Mathlib.Data.Finset.Sym
. We switch from using the one for Quotient
because it does not require DecidableEq
.
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yaël Dillies, Bhavik Mehta
-/
import Mathlib.Combinatorics.SimpleGraph.Clique
+import Mathlib.Data.Finset.Sym
import Mathlib.Tactic.GCongr
#align_import combinatorics.simple_graph.triangle.basic from "leanprover-community/mathlib"@"3365b20c2ffa7c35e47e5209b89ba9abdddf3ffe"
Forward port https://github.com/leanprover-community/mathlib/pull/19203
@@ -6,7 +6,7 @@ Authors: Yaël Dillies, Bhavik Mehta
import Mathlib.Combinatorics.SimpleGraph.Clique
import Mathlib.Tactic.GCongr
-#align_import combinatorics.simple_graph.triangle.basic from "leanprover-community/mathlib"@"cd7f0626a0b04be1dda223a26123313514a55fb4"
+#align_import combinatorics.simple_graph.triangle.basic from "leanprover-community/mathlib"@"3365b20c2ffa7c35e47e5209b89ba9abdddf3ffe"
/-!
# Triangles in graphs
@@ -58,7 +58,7 @@ theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFro
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
(H.cliqueFinset 3).Nonempty :=
nonempty_of_ne_empty <|
- H.cliqueFinset_eq_empty_iff.not.2 fun hH' => (hG.le_card_sub_card hH hH').not_lt hcard
+ cliqueFinset_eq_empty_iff.not.2 fun hH' => (hG.le_card_sub_card hH hH').not_lt hcard
#align simple_graph.far_from_triangle_free.clique_finset_nonempty' SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty'
variable [Nonempty α]
@@ -80,7 +80,7 @@ theorem FarFromTriangleFree.not_cliqueFree (hG : G.FarFromTriangleFree ε) (hε
theorem FarFromTriangleFree.cliqueFinset_nonempty (hG : G.FarFromTriangleFree ε) (hε : 0 < ε) :
(G.cliqueFinset 3).Nonempty :=
- nonempty_of_ne_empty <| G.cliqueFinset_eq_empty_iff.not.2 <| hG.not_cliqueFree hε
+ nonempty_of_ne_empty <| cliqueFinset_eq_empty_iff.not.2 <| hG.not_cliqueFree hε
#align simple_graph.far_from_triangle_free.clique_finset_nonempty SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty
end SimpleGraph
@@ -42,8 +42,9 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
(G.DeleteFar fun H => H.CliqueFree 3) <| ε * (card α ^ 2 : ℕ)
#align simple_graph.far_from_triangle_free SimpleGraph.FarFromTriangleFree
-theorem farFromTriangleFree_iff : G.FarFromTriangleFree ε ↔ ∀ ⦃H⦄, H ≤ G → H.CliqueFree 3 →
- ε * (card α ^ 2 : ℕ) ≤ G.edgeFinset.card - H.edgeFinset.card := deleteFar_iff
+theorem farFromTriangleFree_iff :
+ G.FarFromTriangleFree ε ↔ ∀ ⦃H : SimpleGraph α⦄, [DecidableRel H.Adj] → H ≤ G → H.CliqueFree 3 →
+ ε * (card α ^ 2 : ℕ) ≤ G.edgeFinset.card - H.edgeFinset.card := deleteFar_iff
#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iff
alias ⟨farFromTriangleFree.le_card_sub_card, _⟩ := farFromTriangleFree_iff
@@ -43,7 +43,7 @@ def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
#align simple_graph.far_from_triangle_free SimpleGraph.FarFromTriangleFree
theorem farFromTriangleFree_iff : G.FarFromTriangleFree ε ↔ ∀ ⦃H⦄, H ≤ G → H.CliqueFree 3 →
- ε * (card α ^ 2 : ℕ) ≤ G.edgeFinset.card - H.edgeFinset.card := deleteFar_iff
+ ε * (card α ^ 2 : ℕ) ≤ G.edgeFinset.card - H.edgeFinset.card := deleteFar_iff
#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iff
alias ⟨farFromTriangleFree.le_card_sub_card, _⟩ := farFromTriangleFree_iff
@@ -18,14 +18,12 @@ This module defines and proves properties about triangles in simple graphs.
## Main declarations
-* `SimpleGraph.farFromTriangleFree`: Predicate for a graph to have enough triangles that, to
- remove all of them, one must one must remove a lot of edges. This is the crux of the Triangle
- Removal lemma.
+* `SimpleGraph.FarFromTriangleFree`: Predicate for a graph such that one must remove a lot of edges
+ from it for it to become triangle-free. This is the crux of the Triangle Removal Lemma.
## TODO
* Generalise `farFromTriangleFree` to other graphs, to state and prove the Graph Removal Lemma.
-* Find a better name for `farFromTriangleFree`. Added 4/26/2022. Remove this TODO if it gets old.
-/
@@ -38,8 +36,8 @@ namespace SimpleGraph
variable {α 𝕜 : Type*} [Fintype α] [LinearOrderedField 𝕜] {G H : SimpleGraph α} {ε δ : 𝕜} {n : ℕ}
{s : Finset α}
-/-- A simple graph is *`ε`-triangle-free far* if one must remove at least `ε * (card α)^2` edges to
-make it triangle-free. -/
+/-- A simple graph is *`ε`-far from triangle-free* if one must remove at least
+`ε * (card α) ^ 2` edges to make it triangle-free. -/
def FarFromTriangleFree (G : SimpleGraph α) (ε : 𝕜) : Prop :=
(G.DeleteFar fun H => H.CliqueFree 3) <| ε * (card α ^ 2 : ℕ)
#align simple_graph.far_from_triangle_free SimpleGraph.FarFromTriangleFree
@@ -51,9 +49,9 @@ theorem farFromTriangleFree_iff : G.FarFromTriangleFree ε ↔ ∀ ⦃H⦄, H
alias ⟨farFromTriangleFree.le_card_sub_card, _⟩ := farFromTriangleFree_iff
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
-theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
+nonrec theorem FarFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
G.FarFromTriangleFree δ := hε.mono <| by gcongr
-#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.mono
+#align simple_graph.far_from_triangle_free.mono SimpleGraph.FarFromTriangleFree.mono
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
(hcard : (G.edgeFinset.card - H.edgeFinset.card : 𝕜) < ε * (card α ^ 2 : ℕ)) :
@@ -48,7 +48,7 @@ theorem farFromTriangleFree_iff : G.FarFromTriangleFree ε ↔ ∀ ⦃H⦄, H
ε * (card α ^ 2 : ℕ) ≤ G.edgeFinset.card - H.edgeFinset.card := deleteFar_iff
#align simple_graph.far_from_triangle_free_iff SimpleGraph.farFromTriangleFree_iff
-alias farFromTriangleFree_iff ↔ farFromTriangleFree.le_card_sub_card _
+alias ⟨farFromTriangleFree.le_card_sub_card, _⟩ := farFromTriangleFree_iff
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -35,7 +35,7 @@ open Classical
namespace SimpleGraph
-variable {α 𝕜 : Type _} [Fintype α] [LinearOrderedField 𝕜] {G H : SimpleGraph α} {ε δ : 𝕜} {n : ℕ}
+variable {α 𝕜 : Type*} [Fintype α] [LinearOrderedField 𝕜] {G H : SimpleGraph α} {ε δ : 𝕜} {n : ℕ}
{s : Finset α}
/-- A simple graph is *`ε`-triangle-free far* if one must remove at least `ε * (card α)^2` edges to
@@ -2,15 +2,12 @@
Copyright (c) 2022 Yaël Dillies, Bhavik Mehta. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yaël Dillies, Bhavik Mehta
-
-! This file was ported from Lean 3 source module combinatorics.simple_graph.triangle.basic
-! leanprover-community/mathlib commit cd7f0626a0b04be1dda223a26123313514a55fb4
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Combinatorics.SimpleGraph.Clique
import Mathlib.Tactic.GCongr
+#align_import combinatorics.simple_graph.triangle.basic from "leanprover-community/mathlib"@"cd7f0626a0b04be1dda223a26123313514a55fb4"
+
/-!
# Triangles in graphs
@@ -9,6 +9,7 @@ Authors: Yaël Dillies, Bhavik Mehta
! if you have ported upstream changes.
-/
import Mathlib.Combinatorics.SimpleGraph.Clique
+import Mathlib.Tactic.GCongr
/-!
# Triangles in graphs
@@ -54,7 +55,7 @@ alias farFromTriangleFree_iff ↔ farFromTriangleFree.le_card_sub_card _
#align simple_graph.far_from_triangle_free.le_card_sub_card SimpleGraph.farFromTriangleFree.le_card_sub_card
theorem farFromTriangleFree.mono (hε : G.FarFromTriangleFree ε) (h : δ ≤ ε) :
- G.FarFromTriangleFree δ := hε.mono <| mul_le_mul_of_nonneg_right h <| cast_nonneg _
+ G.FarFromTriangleFree δ := hε.mono <| by gcongr
#align simple_graph.far_from_triangle_free.mono SimpleGraph.farFromTriangleFree.mono
theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFromTriangleFree ε)
by
s! (#3825)
This PR puts, with one exception, every single remaining by
that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh
. The exception is when the by
begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.
Essentially this is s/\n *by$/ by/g
, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated by
s".
@@ -66,8 +66,8 @@ theorem FarFromTriangleFree.cliqueFinset_nonempty' (hH : H ≤ G) (hG : G.FarFro
variable [Nonempty α]
-theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.CliqueFree 3) : ε ≤ 0 :=
- by
+theorem FarFromTriangleFree.nonpos (h₀ : G.FarFromTriangleFree ε) (h₁ : G.CliqueFree 3) :
+ ε ≤ 0 := by
have := h₀ (empty_subset _)
rw [coe_empty, Finset.card_empty, cast_zero, deleteEdges_empty_eq] at this
exact nonpos_of_mul_nonpos_left (this h₁) (cast_pos.2 <| sq_pos_of_pos Fintype.card_pos)
@@ -87,4 +87,3 @@ theorem FarFromTriangleFree.cliqueFinset_nonempty (hG : G.FarFromTriangleFree ε
#align simple_graph.far_from_triangle_free.clique_finset_nonempty SimpleGraph.FarFromTriangleFree.cliqueFinset_nonempty
end SimpleGraph
-
The unported dependencies are