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 b → relation.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 b → relation.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 h → P 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 b → relation.trans_gen r b c → relation.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 b → p (f a) (f b)) → relation.refl_trans_gen r a b → relation.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 b → p a b) → relation.refl_trans_gen r a b → relation.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 b → relation.refl_trans_gen p (f a) (f b)) → relation.refl_trans_gen r a b → relation.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 b → relation.refl_trans_gen p a b) → relation.refl_trans_gen r a b → relation.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 b → r a c → (∃ (d : α), relation.refl_gen r b d ∧ relation.refl_trans_gen r c d)) → relation.refl_trans_gen r a b → relation.refl_trans_gen r a c → relation.join (relation.refl_trans_gen r) b c

theorem relation.​join_of_single {α : Type u_1} {r : α → α → Prop} {a b : α} :
reflexive r → r a b → relation.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 b → r a c → relation.join r b c) → transitive (relation.join r)

theorem relation.​equivalence_join {α : Type u_1} {r : α → α → Prop} :
reflexive r → transitive r → (∀ (a b c : α), r a b → r a c → relation.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 b → r 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 b → r a b) → relation.join r' a b → r a b

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

theorem relation.​refl_trans_gen_of_equivalence {α : Type u_1} {r : α → α → Prop} {a b : α} {r' : α → α → Prop} :
equivalence r → (∀ (a b : α), r' a b → r a b) → relation.refl_trans_gen r' a b → r 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 b → p a b) → eqv_gen r a b → eqv_gen p a b