Documentation

LeanSubst.Rewriting.Reduction

class LeanSubst.HasTriangle {T : Type u} (R : T → T → Prop) :
  • complete : T → T
  • triangle {t s : T} : R t s → R s (complete R t)
Instances
    inductive LeanSubst.ActionRed {T : Type} (R : T → T → Prop) :
    Action T → Action T → Prop
    Instances For
      inductive LeanSubst.Star {T : Type} (R : T → T → Prop) :
      T → T → Prop
      • refl {T : Type} {R : T → T → Prop} {t : T} : Star R t t
      • step {T : Type} {R : T → T → Prop} {x y z : T} : Star R x y → R y z → Star R x z
      Instances For
        inductive LeanSubst.Plus {T : Type} (R : T → T → Prop) :
        T → T → Prop
        • start {T : Type} {R : T → T → Prop} {t s : T} : R t s → Plus R t s
        • step {T : Type} {R : T → T → Prop} {x y z : T} : Plus R x y → R y z → Plus R x z
        Instances For
          inductive LeanSubst.Conv {T : Type} (R : T → T → Prop) :
          T → T → Prop
          • refl {T : Type} {R : T → T → Prop} {x : T} : Conv R x x
          • forward {T : Type} {R : T → T → Prop} {x y z : T} : Conv R x z → R x y → Conv R y z
          • backward {T : Type} {R : T → T → Prop} {x y z : T} : Conv R y z → R x y → Conv R x z
          Instances For
            class LeanSubst.HasConfluence {T : Type} (R : T → T → Prop) :
            Instances
              theorem LeanSubst.Star.trans {T : Type} {R : T → T → Prop} {x y z : T} :
              Star R x y → Star R y z → Star R x z
              theorem LeanSubst.Star.promote {T : Type} {R1 R2 : T → T → Prop} {x y : T} (Rprm : ∀ {x y : T}, R1 x y → R2 x y) :
              Star R1 x y → Star R2 x y
              theorem LeanSubst.Star.stepr {T : Type} {R : T → T → Prop} {x y z : T} :
              R x y → Star R y z → Star R x z
              theorem LeanSubst.Star.destruct {T : Type} {R : T → T → Prop} {x z : T} :
              Star R x z → (∃ (y : T), R x y ∧ Star R y z) ∨ x = z
              theorem LeanSubst.Star.congr3_1 {T : Type} {R : T → T → Prop} {t1 t1' : T} (t2 t3 : T) (f : T → T → T → T) :
              (∀ {t1 t2 t3 t1' : T}, R t1 t1' → R (f t1 t2 t3) (f t1' t2 t3)) → Star R t1 t1' → Star R (f t1 t2 t3) (f t1' t2 t3)
              theorem LeanSubst.Star.congr3_2 {T : Type} {R : T → T → Prop} {t2 t2' : T} (t1 t3 : T) (f : T → T → T → T) :
              (∀ {t1 t2 t3 t2' : T}, R t2 t2' → R (f t1 t2 t3) (f t1 t2' t3)) → Star R t2 t2' → Star R (f t1 t2 t3) (f t1 t2' t3)
              theorem LeanSubst.Star.congr3_3 {T : Type} {R : T → T → Prop} {t3 t3' : T} (t1 t2 : T) (f : T → T → T → T) :
              (∀ {t1 t2 t3 t3' : T}, R t3 t3' → R (f t1 t2 t3) (f t1 t2 t3')) → Star R t3 t3' → Star R (f t1 t2 t3) (f t1 t2 t3')
              theorem LeanSubst.Star.congr3 {T : Type} {R : T → T → Prop} {t1 t1' t2 t2' t3 t3' : T} (f : T → T → T → T) :
              (∀ {t1 t2 t3 t1' : T}, R t1 t1' → R (f t1 t2 t3) (f t1' t2 t3)) → (∀ {t1 t2 t3 t2' : T}, R t2 t2' → R (f t1 t2 t3) (f t1 t2' t3)) → (∀ {t1 t2 t3 t3' : T}, R t3 t3' → R (f t1 t2 t3) (f t1 t2 t3')) → Star R t1 t1' → Star R t2 t2' → Star R t3 t3' → Star R (f t1 t2 t3) (f t1' t2' t3')
              theorem LeanSubst.Star.congr2_1 {T : Type} {R : T → T → Prop} {t1 t1' : T} (t2 : T) (f : T → T → T) :
              (∀ {t1 t2 t1' : T}, R t1 t1' → R (f t1 t2) (f t1' t2)) → Star R t1 t1' → Star R (f t1 t2) (f t1' t2)
              theorem LeanSubst.Star.congr2_2 {T : Type} {R : T → T → Prop} {t2 t2' : T} (t1 : T) (f : T → T → T) :
              (∀ {t1 t2 t2' : T}, R t2 t2' → R (f t1 t2) (f t1 t2')) → Star R t2 t2' → Star R (f t1 t2) (f t1 t2')
              theorem LeanSubst.Star.congr2 {T : Type} {R : T → T → Prop} {t1 t1' t2 t2' : T} (f : T → T → T) :
              (∀ {t1 t2 t1' : T}, R t1 t1' → R (f t1 t2) (f t1' t2)) → (∀ {t1 t2 t2' : T}, R t2 t2' → R (f t1 t2) (f t1 t2')) → Star R t1 t1' → Star R t2 t2' → Star R (f t1 t2) (f t1' t2')
              theorem LeanSubst.Star.congr1 {T : Type} {R : T → T → Prop} {t1 t1' : T} (f : T → T) :
              (∀ {t1 t1' : T}, R t1 t1' → R (f t1) (f t1')) → Star R t1 t1' → Star R (f t1) (f t1')
              theorem LeanSubst.Star.strip {T : Type} {R : T → T → Prop} [HasTriangle R] {s t1 t2 : T} :
              R s t1 → Star R s t2 → ∃ (t : T), Star R t1 t ∧ R t2 t
              theorem LeanSubst.Star.confluence {T : Type} {R : T → T → Prop} [HasTriangle R] {s t1 t2 : T} :
              Star R s t1 → Star R s t2 → ∃ (t : T), Star R t1 t ∧ Star R t2 t
              theorem LeanSubst.Plus.destruct {T : Type} {R : T → T → Prop} {x z : T} :
              Plus R x z → ∃ (y : T), R x y ∧ Star R y z
              theorem LeanSubst.Plus.stepr {T : Type} {R : T → T → Prop} {x y z : T} :
              R x y → Plus R y z → Plus R x z
              theorem LeanSubst.Plus.stepr_from_star {T : Type} {R : T → T → Prop} {x y z : T} :
              R x y → Star R y z → Plus R x z
              theorem LeanSubst.Conv.forward_right {T : Type} {R : T → T → Prop} {x y z : T} :
              Conv R x y → R y z → Conv R x z
              theorem LeanSubst.Conv.backward_right {T : Type} {R : T → T → Prop} {x y z : T} :
              Conv R x y → R z y → Conv R x z
              theorem LeanSubst.Conv.sym {T : Type} {R : T → T → Prop} {x y : T} :
              Conv R x y → Conv R y x
              theorem LeanSubst.Conv.star_forward {T : Type} {R : T → T → Prop} {x y z : T} :
              Conv R x z → Star R x y → Conv R y z
              theorem LeanSubst.Conv.star_backward {T : Type} {R : T → T → Prop} {x y z : T} :
              Conv R y z → Star R x y → Conv R x z
              theorem LeanSubst.Conv.star_forward_right {T : Type} {R : T → T → Prop} {x y z : T} :
              Conv R x y → Star R y z → Conv R x z
              theorem LeanSubst.Conv.star_backward_right {T : Type} {R : T → T → Prop} {x y z : T} :
              Conv R x y → Star R z y → Conv R x z
              theorem LeanSubst.Conv.star_equiv {T : Type} {R : T → T → Prop} {x y : T} [HasConfluence R] :
              Conv R x y ↔ ∃ (t : T), Star R x t ∧ Star R y t
              theorem LeanSubst.Conv.trans {T : Type} {R : T → T → Prop} {x y z : T} [HasConfluence R] :
              Conv R x y → Conv R y z → Conv R x z
              def LeanSubst.FunctionalTerm {T : Type u} (R : T → T → Prop) (t : T) :
              Equations
              Instances For
                class LeanSubst.Functional {T : Type u} (R : T → T → Prop) :
                Instances