Documentation

Foundation.Vorspiel.RelItr

def Rel.iterate {α : Type u_1} (R : Rel α α) :
ααProp
Equations
  • R.iterate 0 = fun (x1 x2 : α) => x1 = x2
  • R.iterate n.succ = fun (x y : α) => ∃ (z : α), R x z R.iterate n z y
@[simp]
theorem Rel.iterate.iff_zero {α : Type u_1} {R : Rel α α} {x y : α} :
R.iterate 0 x y x = y
@[simp]
theorem Rel.iterate.iff_succ {α : Type u_1} {R : Rel α α} {n : } {x y : α} :
R.iterate (n + 1) x y ∃ (z : α), R x z R.iterate n z y
@[simp]
theorem Rel.iterate.eq {α : Type u_1} {n : } :
iterate (fun (x1 x2 : α) => x1 = x2) n = fun (x1 x2 : α) => x1 = x2
theorem Rel.iterate.forward {α : Type u_1} {R : Rel α α} {n : } {x y : α} :
R.iterate (n + 1) x y ∃ (z : α), R.iterate n x z R z y
theorem Rel.iterate.true_any {n : } {α✝ : Type u_1} {x y : α✝} (h : x = y) :
iterate (fun (x x : α✝) => True) n x y
theorem Rel.iterate.congr {α : Type u_1} {R : Rel α α} {n m : } {x y : α} (h : R.iterate n x y) (he : n = m) :
R.iterate m x y
theorem Rel.iterate.comp {α : Type u_1} {R : Rel α α} {n m : } {x y : α} :
(∃ (z : α), R.iterate n x z R.iterate m z y) R.iterate (n + m) x y