Relations Across Steps #
This file defines Relation.RelatesInSteps (and Relation.RelatesWithinSteps).
These are inductively defines propositions that communicate whether a relation forms a
chain of length n (or at most n) between two elements.
A relation r relates two elements of α in n steps
if there is a chain of n pairs (t_i, t_{i+1}) such that r t_i t_{i+1} for each i,
starting from the first element and ending at the second.
- refl {α : Type u_1} {r : α → α → Prop} (a : α) : RelatesInSteps r a a 0
- tail {α : Type u_1} {r : α → α → Prop} (t t' t'' : α) (n : ℕ) (h₁ : RelatesInSteps r t t' n) (h₂ : r t' t'') : RelatesInSteps r t t'' (n + 1)
Instances For
If h : α → ℕ increases by at most 1 on each step of r,
then the value of h at the output is at most h at the input plus the number of steps.
If g is a homomorphism from r to r' (i.e., it preserves the reduction relation),
then RelatesInSteps is preserved under g.
RelatesWithinSteps is a variant of RelatesInSteps that allows for a loose bound.
It states that a relates to b in at most n steps.
Instances For
RelatesInSteps implies RelatesWithinSteps with the same bound.
Transitivity of RelatesWithinSteps in the sum of the step bounds.
If h : α → ℕ increases by at most 1 on each step of r,
then the value of h at the output is at most h at the input plus the step bound.
If g is a homomorphism from r to r' (i.e., it preserves the reduction relation),
then RelatesWithinSteps is preserved under g.