Documentation

Semantic.CC.Syntax.Exp

Expression definitions and operations for CC.

inductive CC.Exp :
SigType

An expression in CC.

Instances For
    def CC.Exp.rename {s1 s2 : Sig} :
    Exp s1Rename s1 s2Exp s2

    Applies a renaming to all bound variables in an expression.

    Equations
    Instances For
      inductive CC.Exp.IsVal {s : Sig} :
      Exp sProp

      An expression is a value if it is an abstraction, pack, or unit.

      Instances For
        inductive CC.Exp.IsSimpleVal {s : Sig} :
        Exp sProp

        A simple value is a value that is not a pack. Therefore, a simple value always has a capturing type, not an existential type.

        Instances For
          inductive CC.Exp.IsSimpleAns {s : Sig} :
          Exp sProp
          Instances For
            inductive CC.Exp.IsPack {s : Sig} :
            Exp sProp
            Instances For
              structure CC.Val (s : Sig) :

              A value, bundling an expression with a proof that it is a value.

              Instances For
                def CC.Var.rename_id {k : Kind} {s : Sig} {x : Var k s} :

                Renaming by the identity renaming leaves a variable unchanged.

                Equations
                • =
                Instances For
                  def CC.Exp.rename_id {s : Sig} {e : Exp s} :

                  Renaming by the identity renaming leaves an expression unchanged.

                  Equations
                  • =
                  Instances For
                    theorem CC.Var.rename_comp {k : Kind} {s1 s2 s3 : Sig} {x : Var k s1} {f : Rename s1 s2} {g : Rename s2 s3} :
                    (x.rename f).rename g = x.rename (f.comp g)

                    Renaming distributes over composition of renamings.

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

                    Renaming distributes over composition of renamings.

                    theorem CC.Var.weaken_rename_comm {k : Kind} {s1 s2 : Sig} {k0 : Kind} {x : Var k s1} {f : Rename s1 s2} :

                    Weakening commutes with renaming under a binder.

                    inductive CC.Exp.IsAns :

                    An answer is a value or a free variable in the empty context.

                    Instances For
                      inductive CC.Exp.IsClosed {s : Sig} :
                      Exp sProp

                      An expression is closed if it contains no heap pointers.

                      Instances For