Documentation

Complexitylib.DescriptiveComplexity.SecondOrder.Renaming.Defs

Arity-preserving renaming of second-order relation variables #

A relation renaming maps indices while preserving their arities. Lifting fixes the newly bound relation and renames the older variables. Formula renaming thus avoids capture under both sorts of second-order quantifier. Element variables and vocabulary symbols are unchanged.

A map between relation contexts that preserves the arity of every variable.

  • index : Fin rctx.length → Fin sctx.length

    The target index of each source relation variable.

  • arity (r : Fin rctx.length) : sctx.get (self.index r) = rctx.get r

    Renaming preserves the relation's arity.

Instances For

    The identity renaming.

    Equations
    Instances For
      def Complexity.DescriptiveComplexity.RelRenaming.comp {rctx sctx tctx : List Nat} (g : RelRenaming sctx tctx) (f : RelRenaming rctx sctx) :
      RelRenaming rctx tctx

      Successive renamings compose in application order.

      Equations
      Instances For
        def Complexity.DescriptiveComplexity.RelRenaming.lift {rctx sctx : List Nat} (f : RelRenaming rctx sctx) (k : Nat) :
        RelRenaming (k :: rctx) (k :: sctx)

        Lift a renaming through a relation binder of arity k.

        Equations
        Instances For

          Make room for a fresh relation variable at index zero.

          Equations
          Instances For
            def Complexity.DescriptiveComplexity.RelRenaming.pull {rctx sctx : List Nat} (f : RelRenaming rctx sctx) {card : Nat} (ρ : REnv card sctx) :
            REnv card rctx

            Read a target relation environment at the renamed source indices.

            Equations
            Instances For