Basic properties of relations #
TODO: #
Many of the results here could be upstreamed to Mathlib. In particular:
ReflGen.le_reflGenand relatives,ReflGen.to_eqvGenand relatives.
theorem WellFounded.ofTransGen {α : Type u_1} {r : α → α → Prop} (trans_wf : WellFounded (Relation.TransGen r)) :
@[simp]
theorem Relation.ReflTransGen.to_eqvGen {α : Type u_1} {r : α → α → Prop} {a b : α} (h : ReflTransGen r a b) :
EqvGen r a b
@[simp]
theorem Equivalence.eqvGen_le {α : Type u_1} {r₁ r₂ : α → α → Prop} (h : Equivalence r₂) (hle : r₁ ≤ r₂) :
theorem Relation.Join₂.join₂_le {α : Type u_1} {r r₁ r₂ : α → α → Prop} [IsTrans α r] (h₁ : r₁ ≤ r) (h₂ : Function.swap r₂ ≤ r) :
@[deprecated refl (since := "2026-09-07")]
@[deprecated Relation.Join.single (since := "2026-09-07")]
theorem Relation.MJoin.single {α : Type u_1} {r : α → α → Prop} {a b : α} (h : ReflTransGen r a b) :
MJoin r a b
theorem Equivalence.join_reflTransGen_le {α : Type u_1} {r₁ r₂ : α → α → Prop} (h : Equivalence r₂) (hle : r₁ ≤ r₂) :
theorem Relation.join₂_reflTransGen_le {α : Type u_1} {r r₁ r₂ : α → α → Prop} [Std.Refl r] [IsTrans α r] (h₁ : r₁ ≤ r) (h₂ : Function.swap r₂ ≤ r) :
theorem Equivalence.join₂_reflTransGen_le {α : Type u_1} {r r₁ r₂ : α → α → Prop} (h : Equivalence r) (h₁ : r₁ ≤ r) (h₂ : r₂ ≤ r) :
theorem Relation.reflTransGen_mono_closed {α : Type u_1} {r₁ r₂ : α → α → Prop} (h₁ : r₁ ≤ r₂) (h₂ : r₂ ≤ ReflTransGen r₁) :
If a relation is squeezed by a relation and its multi-step closure, they are multi-step equal
@[simp]
theorem Relation.join_inl {α : Type u_1} {r₁ r₂ : α → α → Prop} {a b : α} (r₁_ab : r₁ a b) :
(r₁ ⊔ r₂) a b
theorem Relation.join_inr {α : Type u_1} {r₁ r₂ : α → α → Prop} {a b : α} (r₂_ab : r₂ a b) :
(r₁ ⊔ r₂) a b
theorem Relation.join_inl_reflTransGen {α : Type u_1} {r₁ r₂ : α → α → Prop} {a b : α} (r₁_ab : ReflTransGen r₁ a b) :
ReflTransGen (r₁ ⊔ r₂) a b
theorem Relation.join_inr_reflTransGen {α : Type u_1} {r₁ r₂ : α → α → Prop} {a b : α} (r₂_ab : ReflTransGen r₂ a b) :
ReflTransGen (r₁ ⊔ r₂) a b