mathlib documentation

logic.​relation

logic.​relation

def relation.​comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} :
(α → β → Prop)(β → γ → Prop)α → γ → Prop

Equations
theorem relation.​comp_eq {α : Type u_1} {β : Type u_2} {r : α → β → Prop} :

theorem relation.​eq_comp {α : Type u_1} {β : Type u_2} {r : α → β → Prop} :

theorem relation.​iff_comp {α : Type u_1} {r : Prop → α → Prop} :

theorem relation.​comp_iff {α : Type u_1} {r : α → Prop → Prop} :

theorem relation.​comp_assoc {α : Type u_1} {β : Type u_2} {γ : Type u_3} {δ : Type u_4} {r : α → β → Prop} {p : β → γ → Prop} {q : γ → δ → Prop} :

theorem relation.​flip_comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} {r : α → β → Prop} {p : β → γ → Prop} :

def relation.​map {α : Type u_1} {β : Type u_2} {γ : Type u_3} {δ : Type u_4} :
(α → β → Prop)(α → γ)(β → δ)γ → δ → Prop

Equations
inductive relation.​refl_trans_gen {α : Type u_1} :
(α → α → Prop)α → α → Prop

refl_trans_gen r: reflexive transitive closure of r

inductive relation.​refl_gen {α : Type u_1} :
(α → α → Prop)α → α → Prop
  • refl : ∀ {α : Type u_1} (r : α → α → Prop) (a : α), relation.refl_gen r a a
  • single : ∀ {α : Type u_1} (r : α → α → Prop) (a : α) {b : α}, r a brelation.refl_gen r a b

refl_gen r: reflexive closure of r

inductive relation.​trans_gen {α : Type u_1} :
(α → α → Prop)α → α → Prop

trans_gen r: transitive closure of r

theorem relation.​refl_gen.​to_refl_trans_gen {α : Type u_1} {r : α → α → Prop} {a b : α} :

theorem relation.​refl_trans_gen.​trans {α : Type u_1} {r : α → α → Prop} {a b c : α} :

theorem relation.​refl_trans_gen.​single {α : Type u_1} {r : α → α → Prop} {a b : α} :
r a brelation.refl_trans_gen r a b

theorem relation.​refl_trans_gen.​head {α : Type u_1} {r : α → α → Prop} {a b c : α} :

theorem relation.​refl_trans_gen.​symmetric {α : Type u_1} {r : α → α → Prop} :

theorem relation.​refl_trans_gen.​cases_tail {α : Type u_1} {r : α → α → Prop} {a b : α} :
relation.refl_trans_gen r a b(b = a ∃ (c : α), relation.refl_trans_gen r a c r c b)

theorem relation.​refl_trans_gen.​head_induction_on {α : Type u_1} {r : α → α → Prop} {b : α} {P : Π (a : α), relation.refl_trans_gen r a b → Prop} {a : α} (h : relation.refl_trans_gen r a b) :
P b relation.refl_trans_gen.refl(∀ {a c : α} (h' : r a c) (h : relation.refl_trans_gen r c b), P c hP a _)P a h

theorem relation.​refl_trans_gen.​trans_induction_on {α : Type u_1} {r : α → α → Prop} {P : Π {a b : α}, relation.refl_trans_gen r a b → Prop} {a b : α} (h : relation.refl_trans_gen r a b) :
(∀ (a : α), P relation.refl_trans_gen.refl)(∀ {a b : α} (h : r a b), P _)(∀ {a b c : α} (h₁ : relation.refl_trans_gen r a b) (h₂ : relation.refl_trans_gen r b c), P h₁P h₂P _)P h

theorem relation.​refl_trans_gen.​cases_head {α : Type u_1} {r : α → α → Prop} {a b : α} :
relation.refl_trans_gen r a b(a = b ∃ (c : α), r a c relation.refl_trans_gen r c b)

theorem relation.​refl_trans_gen.​cases_head_iff {α : Type u_1} {r : α → α → Prop} {a b : α} :
relation.refl_trans_gen r a b a = b ∃ (c : α), r a c relation.refl_trans_gen r c b

theorem relation.​trans_gen.​to_refl {α : Type u_1} {r : α → α → Prop} {a b : α} :

theorem relation.​trans_gen.​trans_left {α : Type u_1} {r : α → α → Prop} {a b c : α} :

theorem relation.​trans_gen.​trans {α : Type u_1} {r : α → α → Prop} {a b c : α} :

theorem relation.​trans_gen.​head' {α : Type u_1} {r : α → α → Prop} {a b c : α} :

theorem relation.​trans_gen.​tail' {α : Type u_1} {r : α → α → Prop} {a b c : α} :

theorem relation.​trans_gen.​trans_right {α : Type u_1} {r : α → α → Prop} {a b c : α} :

theorem relation.​trans_gen.​head {α : Type u_1} {r : α → α → Prop} {a b c : α} :
r a brelation.trans_gen r b crelation.trans_gen r a c

theorem relation.​trans_gen.​tail'_iff {α : Type u_1} {r : α → α → Prop} {a c : α} :
relation.trans_gen r a c ∃ (b : α), relation.refl_trans_gen r a b r b c

theorem relation.​trans_gen.​head'_iff {α : Type u_1} {r : α → α → Prop} {a c : α} :
relation.trans_gen r a c ∃ (b : α), r a b relation.refl_trans_gen r b c

theorem relation.​refl_trans_gen_iff_eq {α : Type u_1} {r : α → α → Prop} {a b : α} :
(∀ (b : α), ¬r a b)(relation.refl_trans_gen r a b b = a)

theorem relation.​refl_trans_gen_iff_eq_or_trans_gen {α : Type u_1} {r : α → α → Prop} {a b : α} :

theorem relation.​refl_trans_gen_lift {α : Type u_1} {β : Type u_2} {r : α → α → Prop} {p : β → β → Prop} {a b : α} (f : α → β) :
(∀ (a b : α), r a bp (f a) (f b))relation.refl_trans_gen r a brelation.refl_trans_gen p (f a) (f b)

theorem relation.​refl_trans_gen_mono {α : Type u_1} {r : α → α → Prop} {a b : α} {p : α → α → Prop} :
(∀ (a b : α), r a bp a b)relation.refl_trans_gen r a brelation.refl_trans_gen p a b

theorem relation.​refl_trans_gen_eq_self {α : Type u_1} {r : α → α → Prop} :

theorem relation.​reflexive_refl_trans_gen {α : Type u_1} {r : α → α → Prop} :

theorem relation.​transitive_refl_trans_gen {α : Type u_1} {r : α → α → Prop} :

theorem relation.​refl_trans_gen_lift' {α : Type u_1} {β : Type u_2} {r : α → α → Prop} {p : β → β → Prop} {a b : α} (f : α → β) :
(∀ (a b : α), r a brelation.refl_trans_gen p (f a) (f b))relation.refl_trans_gen r a brelation.refl_trans_gen p (f a) (f b)

theorem relation.​refl_trans_gen_closed {α : Type u_1} {r : α → α → Prop} {a b : α} {p : α → α → Prop} :
(∀ (a b : α), r a brelation.refl_trans_gen p a b)relation.refl_trans_gen r a brelation.refl_trans_gen p a b

def relation.​join {α : Type u_1} :
(α → α → Prop)α → α → Prop

Equations
theorem relation.​church_rosser {α : Type u_1} {r : α → α → Prop} {a b c : α} :
(∀ (a b c : α), r a br a c(∃ (d : α), relation.refl_gen r b d relation.refl_trans_gen r c d))relation.refl_trans_gen r a brelation.refl_trans_gen r a crelation.join (relation.refl_trans_gen r) b c

theorem relation.​join_of_single {α : Type u_1} {r : α → α → Prop} {a b : α} :
reflexive rr a brelation.join r a b

theorem relation.​symmetric_join {α : Type u_1} {r : α → α → Prop} :

theorem relation.​reflexive_join {α : Type u_1} {r : α → α → Prop} :

theorem relation.​transitive_join {α : Type u_1} {r : α → α → Prop} :
transitive r(∀ (a b c : α), r a br a crelation.join r b c)transitive (relation.join r)

theorem relation.​equivalence_join {α : Type u_1} {r : α → α → Prop} :
reflexive rtransitive r(∀ (a b c : α), r a br a crelation.join r b c)equivalence (relation.join r)

theorem relation.​equivalence_join_refl_trans_gen {α : Type u_1} {r : α → α → Prop} :
(∀ (a b c : α), r a br a c(∃ (d : α), relation.refl_gen r b d relation.refl_trans_gen r c d))equivalence (relation.join (relation.refl_trans_gen r))

theorem relation.​join_of_equivalence {α : Type u_1} {r : α → α → Prop} {a b : α} {r' : α → α → Prop} :
equivalence r(∀ (a b : α), r' a br a b)relation.join r' a br a b

theorem relation.​refl_trans_gen_of_transitive_reflexive {α : Type u_1} {r : α → α → Prop} {a b : α} {r' : α → α → Prop} :
reflexive rtransitive r(∀ (a b : α), r' a br a b)relation.refl_trans_gen r' a br a b

theorem relation.​refl_trans_gen_of_equivalence {α : Type u_1} {r : α → α → Prop} {a b : α} {r' : α → α → Prop} :
equivalence r(∀ (a b : α), r' a br a b)relation.refl_trans_gen r' a br a b

theorem relation.​eqv_gen_iff_of_equivalence {α : Type u_1} {r : α → α → Prop} {a b : α} :
equivalence r(eqv_gen r a b r a b)

theorem relation.​eqv_gen_mono {α : Type u_1} {a b : α} {r p : α → α → Prop} :
(∀ (a b : α), r a bp a b)eqv_gen r a beqv_gen p a b