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