Documentation

Semantic.CC.Syntax.CaptureSet

This module defines the capture set syntax of CC.

inductive CC.Var :
KindSigType

A variable, either bound (de Bruijn indexed) or free (heap pointer).

Instances For
    inductive CC.CaptureSet :
    SigType

    A set of captured variables.

    Instances For

      Provides {} notation for the empty capture set.

      Equations

      Provides notation for capture set union.

      Equations
      def CC.Var.rename {k : Kind} {s1 s2 : Sig} :
      Var k s1Rename s1 s2Var k s2

      Applies a renaming to a variable. Free variables remain unchanged.

      Equations
      Instances For
        def CC.CaptureSet.rename {s1 s2 : Sig} :
        CaptureSet s1Rename s1 s2CaptureSet s2

        Applies a renaming to all bound variables in a capture set.

        Equations
        Instances For
          theorem CC.CaptureSet.rename_id {s : Sig} {cs : CaptureSet s} :

          Renaming by the identity renaming leaves a capture set unchanged.

          theorem CC.CaptureSet.rename_comp {s1 s2 s3 : Sig} {cs : CaptureSet s1} {f : Rename s1 s2} {g : Rename s2 s3} :
          (cs.rename f).rename g = cs.rename (f.comp g)

          Renaming distributes over composition of renamings.

          inductive CC.CaptureSet.Subset {s : Sig} :

          The subset relation on capture sets.

          Instances For

            Provides notation for capture set subset.

            Equations
            inductive CC.Var.IsClosed {k : Kind} {s : Sig} :
            Var k sProp

            A variable is closed if it contains no heap pointers.

            Instances For
              inductive CC.CaptureSet.IsClosed {s : Sig} :

              A capture set is closed if it contains no heap pointers.

              Instances For