The empty (heterogeneous) relation, which always returns False.
Equations
- Relation.emptyHRelation x✝¹ x✝ = False
Instances For
The join of the reflexive transitive closure. This is not named in Mathlib, but see
#loogle Relation.Join (Relation.ReflTransGen ?r)
Equations
Instances For
The relation r 'up to' the relation s.
Equations
- Relation.UpTo r s = Relation.Comp s (Relation.Comp r s)
Instances For
A relation r is (right) Euclidean if r a b and r a c guarantee r b c.
- rightEuclidean {a b c : α} : r a b → r a c → r b c
Instances
A relation r is (left) Euclidean if r a c and r b c guarantee r a b.
- leftEuclidean {a b c : α} : r a c → r b c → r a b
Instances
A relation has the diamond property when all reductions with a common origin are joinable
Equations
- Relation.Diamond r = ∀ {a b c : α}, r a b → r a c → Relation.Join r b c
Instances For
A relation is confluent when its reflexive transitive closure has the diamond property.
Equations
Instances For
A relation is semi-confluent when single and multiple steps with common origin are multi-joinable.
Equations
- Relation.SemiConfluent r = ∀ {x y₁ y₂ : α}, Relation.ReflTransGen r x y₂ → r x y₁ → Relation.Join (Relation.ReflTransGen r) y₁ y₂
Instances For
A relation has the Church Rosser property when equivalence implies multi-joinability.
Equations
- Relation.ChurchRosser r = ∀ {x y : α}, Relation.EqvGen r x y → Relation.Join (Relation.ReflTransGen r) x y
Instances For
A relation r is serial if every element is Reducible, i.e. Relator.LeftTotal.
- serial : Relator.LeftTotal r
Instances
An element is normal if it is not reducible.
Equations
- Relation.Normal r x = ¬Relation.Reducible r x
Instances For
An element is normalizable if it is related to a normal element.
Equations
- Relation.Normalizable r x = ∃ (n : α), Relation.ReflTransGen r x n ∧ Relation.Normal r n
Instances For
A relation is normalizing when every element is normalizable.
Equations
- Relation.Normalizing r = ∀ (x : α), Relation.Normalizable r x
Instances For
An element x is SN (for strongly-normalising) for a relation r if it is accesible under
the inverse of r.
Equations
- Relation.SN r = Acc fun (a b : α) => r b a
Instances For
A relation is terminating when the inverse of its transitive closure is well-founded. Note that this is also called Noetherian or strongly normalizing in the literature.
Equations
- Relation.Terminating r = WellFounded fun (a b : α) => r b a
Instances For
A relation is convergent when it is both confluent and terminating.
Equations
Instances For
A relation is locally confluent when all reductions with a common origin are multi-joinable
Equations
- Relation.LocallyConfluent r = ∀ {a b c : α}, r a b → r a c → Relation.Join (Relation.ReflTransGen r) b c
Instances For
A relation is strongly confluent when single steps are reflexive- and multi-joinable.
Equations
- Relation.StronglyConfluent r = ∀ {x y₁ y₂ : α}, r x y₁ → r x y₂ → ∃ (z : α), Relation.ReflGen r y₁ z ∧ Relation.ReflTransGen r y₂ z
Instances For
Generalization of Confluent to two relations.
Equations
- Relation.Commute r₁ r₂ = ∀ {x y₁ y₂ : α}, Relation.ReflTransGen r₁ x y₁ → Relation.ReflTransGen r₂ x y₂ → ∃ (z : α), Relation.ReflTransGen r₂ y₁ z ∧ Relation.ReflTransGen r₁ y₂ z
Instances For
Generalization of StronglyConfluent to two relations.
Equations
- Relation.StronglyCommute r₁ r₂ = ∀ {x y₁ y₂ : α}, r₁ x y₁ → r₂ x y₂ → ∃ (z : α), Relation.ReflGen r₂ y₁ z ∧ Relation.ReflTransGen r₁ y₂ z