Documentation

VCVio.Interaction.Concurrent.Liveness

Safety and liveness predicates over concurrent runs #

This file packages the semantic notions of safety and liveness that sit on top of runs and fairness.

The goal is deliberately modest and foundational. Rather than introducing a full temporal-logic syntax, the file defines:

The closed-world Process API is recovered as a specialization of these generic definitions.

@[reducible, inline]

Pred process is the type of semantic properties of whole runs of process.

Instances For
    @[reducible, inline]

    StatePred process is the type of predicates on residual process states.

    Instances For

      AlwaysState P run means that the state predicate P holds at every state of the run run.

      Instances For

        EventuallyState P run means that the run eventually reaches a state satisfying P.

        Instances For

          InfinitelyOftenState P run means that P holds at arbitrarily late states of run.

          Instances For
            theorem Interaction.Concurrent.ProcessOver.Run.alwaysState_mono {Γ : Spec.Node.Context} {process : ProcessOver Γ} {P Q : StatePred process} (himp : ∀ (p : process.Proc), P pQ p) {run : process.Run} :
            AlwaysState P runAlwaysState Q run

            Monotonicity of AlwaysState.

            theorem Interaction.Concurrent.ProcessOver.Run.eventuallyState_mono {Γ : Spec.Node.Context} {process : ProcessOver Γ} {P Q : StatePred process} (himp : ∀ (p : process.Proc), P pQ p) {run : process.Run} :

            Monotonicity of EventuallyState.

            theorem Interaction.Concurrent.ProcessOver.Run.infinitelyOftenState_mono {Γ : Spec.Node.Context} {process : ProcessOver Γ} {P Q : StatePred process} (himp : ∀ (p : process.Proc), P pQ p) {run : process.Run} :

            Monotonicity of InfinitelyOftenState.

            A run of system is admissible when the ambient assumptions hold at every state along the run.

            Instances For

              A run of system is safe when the safety predicate holds at every state along the run.

              Instances For

                A run starts from an initial state when its first residual process state satisfies system.init.

                Instances For

                  Satisfies system fairness property means: every initial admissible run of system that satisfies the fairness assumption fairness also satisfies the run property property.

                  Instances For
                    theorem Interaction.Concurrent.ProcessOver.System.alwaysState_of_safe {Γ : Spec.Node.Context} (system : System Γ) {P : Run.StatePred system.toProcess} (himp : ∀ (p : system.Proc), system.safe pP p) {run : system.Run} :
                    system.Safe runRun.AlwaysState P run

                    If a run is safe and every safe state satisfies P, then P holds at every state along the run.

                    @[reducible, inline]
                    abbrev Interaction.Concurrent.Process.Run.Pred {Party : Type u} (process : Process Party) :
                    Type (max u_1 u_2)

                    The closed-world specialization of ProcessOver.Run.Pred.

                    Instances For
                      @[reducible, inline]
                      abbrev Interaction.Concurrent.Process.Run.StatePred {Party : Type u} (process : Process Party) :
                      Type u_1

                      The closed-world specialization of ProcessOver.Run.StatePred.

                      Instances For
                        @[reducible, inline]
                        abbrev Interaction.Concurrent.Process.Run.AlwaysState {Party : Type u} {process : Process Party} (P : StatePred process) (run : process.Run) :

                        AlwaysState for closed-world runs.

                        Instances For
                          @[reducible, inline]
                          abbrev Interaction.Concurrent.Process.Run.EventuallyState {Party : Type u} {process : Process Party} (P : StatePred process) (run : process.Run) :

                          EventuallyState for closed-world runs.

                          Instances For
                            @[reducible, inline]
                            abbrev Interaction.Concurrent.Process.Run.InfinitelyOftenState {Party : Type u} {process : Process Party} (P : StatePred process) (run : process.Run) :

                            InfinitelyOftenState for closed-world runs.

                            Instances For
                              theorem Interaction.Concurrent.Process.Run.alwaysState_mono {Party : Type u} {process : Process Party} {P Q : StatePred process} (himp : ∀ (p : process.Proc), P pQ p) {run : process.Run} :
                              AlwaysState P runAlwaysState Q run
                              theorem Interaction.Concurrent.Process.Run.eventuallyState_mono {Party : Type u} {process : Process Party} {P Q : StatePred process} (himp : ∀ (p : process.Proc), P pQ p) {run : process.Run} :
                              theorem Interaction.Concurrent.Process.Run.infinitelyOftenState_mono {Party : Type u} {process : Process Party} {P Q : StatePred process} (himp : ∀ (p : process.Proc), P pQ p) {run : process.Run} :
                              @[reducible, inline]
                              abbrev Interaction.Concurrent.Process.System.Admissible {Party : Type u} (system : System Party) (run : Run system.toProcess) :

                              The closed-world specialization of run admissibility.

                              Instances For
                                @[reducible, inline]
                                abbrev Interaction.Concurrent.Process.System.Safe {Party : Type u} (system : System Party) (run : Run system.toProcess) :

                                The closed-world specialization of run safety.

                                Instances For
                                  @[reducible, inline]
                                  abbrev Interaction.Concurrent.Process.System.Initial {Party : Type u} (system : System Party) (run : Run system.toProcess) :

                                  The closed-world specialization of initiality.

                                  Instances For
                                    @[reducible, inline]
                                    abbrev Interaction.Concurrent.Process.System.Satisfies {Party : Type u} (system : System Party) (fairness property : Run.Pred system.toProcess) :

                                    The closed-world specialization of semantic satisfaction under fairness.

                                    Instances For
                                      theorem Interaction.Concurrent.Process.System.alwaysState_of_safe {Party : Type u} (system : System Party) {P : Run.StatePred system.toProcess} (himp : ∀ (p : system.Proc), system.safe pP p) {run : Run system.toProcess} :
                                      system.Safe runRun.AlwaysState P run