Documentation

Cslib.Languages.StatefulProcesses.Network

Networks of stateful processes and their semantics #

This module defines networks (maps from process names to process terms), as well as their symbolic and concrete operational semantics.

Implementation notes #

We leverage the fact that networks are functions to formulate the semantics without requiring a definition of parallel composition.

References #

Networks and their symbolic semantics #

@[reducible, inline]
abbrev Cslib.StatefulProcesses.Network (Pid : Type u_1) (Var : Type u_2) (Val : Type u_3) (FunId : Type u_4) (SelLabel : Type u_5) (ProcName : Type u_6) :
Type (max (max (max (max (max (max u_1 u_6) u_5) u_4) u_3) u_2) u_1)

A network maps process names to process terms.

Equations
Instances For
    @[instance_reducible]
    instance Cslib.StatefulProcesses.instZeroNetwork {Pid : Type u_1} {Var : Type u_2} {Val : Type u_3} {FunId : Type u_4} {SelLabel : Type u_5} {ProcName : Type u_6} :
    Zero (Network Pid Var Val FunId SelLabel ProcName)

    The 0 ('zero') network, mapping all processes to the process term 0.

    Equations
    inductive Cslib.StatefulProcesses.Network.TrLabel (Pid : Type u_1) (Var : Type u_2) (Val : Type u_3) (FunId : Type u_4) (SelLabel : Type u_5) :
    Type (max (max (max (max u_1 u_2) u_3) u_4) u_5)

    Symbolic transition labels for networks.

    • local {Pid : Type u_1} {Var : Type u_2} {Val : Type u_3} {FunId : Type u_4} {SelLabel : Type u_5} (p : Pid) (μ : Act Pid Var Val FunId SelLabel) : TrLabel Pid Var Val FunId SelLabel
    • com {Pid : Type u_1} {Var : Type u_2} {Val : Type u_3} {FunId : Type u_4} {SelLabel : Type u_5} (p : Pid) (e : Mech.Expr Var Val FunId) (q : Pid) (x : Var) : TrLabel Pid Var Val FunId SelLabel
    • sel {Pid : Type u_1} {Var : Type u_2} {Val : Type u_3} {FunId : Type u_4} {SelLabel : Type u_5} (p q : Pid) (l : SelLabel) : TrLabel Pid Var Val FunId SelLabel
    Instances For
      inductive Cslib.StatefulProcesses.Network.Tr {Pid : Type u_1} [DecidableEq Pid] {Var : Type u_2} {Val : Type u_3} {FunId : Type u_4} {SelLabel : Type u_5} {ProcName : Type u_6} :
      Network Pid Var Val FunId SelLabel ProcNameTrLabel Pid Var Val FunId SelLabelNetwork Pid Var Val FunId SelLabel ProcNameProp

      Symbolic transition relation for networks.

      Instances For
        def Cslib.StatefulProcesses.Network.lts {Pid : Type u_1} [DecidableEq Pid] {Var : Type u_2} {Val : Type u_3} {FunId : Type u_4} {SelLabel : Type u_5} {ProcName : Type u_6} :
        LTS (Network Pid Var Val FunId SelLabel ProcName) (TrLabel Pid Var Val FunId SelLabel)

        Symbolic LTS of networks.

        Equations
        Instances For

          Stores, evaluation, and concrete semantics of networks #

          structure Cslib.StatefulProcesses.Cfg (Pid : Type u_1) (Var : Type u_2) (Val : Type u_3) (FunId : Type u_4) (SelLabel : Type u_5) (ProcName : Type u_6) :
          Type (max (max (max (max (max u_1 u_2) u_3) u_4) u_5) u_6)

          Configurations, consisting of a network and a global store.

          • net : Network Pid Var Val FunId SelLabel ProcName

            The network of the configuration.

          • store : Mech.GlobalStore Pid Var Val

            The global store of the configuration.

          Instances For
            inductive Cslib.StatefulProcesses.Cfg.TrLabel (Pid : Sort u_1) (Val : Sort u_2) (SelLabel : Sort u_3) :
            Sort (max (max (max 1 u_1) u_2) u_3)

            Transition labels for network configurations.

            These labels model what can be observed from execution, and thus hide internal computational details.

            • local {Pid : Sort u_1} {Val : Sort u_2} {SelLabel : Sort u_3} (p : Pid) : TrLabel Pid Val SelLabel
            • com {Pid : Sort u_1} {Val : Sort u_2} {SelLabel : Sort u_3} (p q : Pid) (v : Val) : TrLabel Pid Val SelLabel
            • sel {Pid : Sort u_1} {Val : Sort u_2} {SelLabel : Sort u_3} (p q : Pid) (l : SelLabel) : TrLabel Pid Val SelLabel
            Instances For
              inductive Cslib.StatefulProcesses.Cfg.Tr {Pid : Type u_1} [DecidableEq Pid] {Var : Type u_2} {Val : Type u_3} {FunId : Type u_4} [DecidableEq Var] (isTrue : ValBool) (Eval : Mech.FunCallEval FunId Val) {SelLabel : Type u_5} {ProcName : Type u_6} :
              Cfg Pid Var Val FunId SelLabel ProcNameTrLabel Pid Val SelLabelCfg Pid Var Val FunId SelLabel ProcNameProp

              Transition relation for network configurations.

              Instances For
                def Cslib.StatefulProcesses.Cfg.lts {Pid : Type u_1} [DecidableEq Pid] {Var : Type u_2} {Val : Type u_3} {FunId : Type u_4} {SelLabel : Type u_5} {ProcName : Type u_6} [DecidableEq Var] (isTrue : ValBool) (Eval : Mech.FunCallEval FunId Val) :
                LTS (Cfg Pid Var Val FunId SelLabel ProcName) (TrLabel Pid Val SelLabel)

                LTS of network configurations.

                Equations
                Instances For