Skip to content
scrambled
Programming Language Theory Concept

Structural induction modulo fresh renaming

Books JourneyProgramming Language Theory Statusreviewing Tags
  • proof reason technique
  • syntax grammar

To show that mathcalP[mathcalX](a) holds for every ainmathcalB[mathcalX], it is enough to show the following:

  • Formulation

    Consider:

    • A set of sorts 𝒮.

    • A set of variables 𝒳.

    • A predicate 𝒫 that is parameterized by 𝒳 and s.

    • A set of Abstract binding tree (ABT) ℬ with Free variables in 𝒳.

      To show that 𝒫[𝒳](a) holds for every a∈ℬ[𝒳], it is enough to show the following:

    1. If x∈𝒳s, then 𝒫[𝒳]s(x).

    2. For every o of arity (s→1.s1;…;s→n.sn).s, if for each 1≤i≤n, 𝒫[𝒳,x→i′]si(ρˆi(ai)) for every ρi:x→i↔x→i′ with x→i′∉𝒳, then 𝒫[𝒳]s(o(x→1.a1;…;x→n.an)).