Documentation

EqCheckingAbstractInterpretation.Ready.Basic

@[reducible, inline]
abbrev EqCheckingAbstractInterpretation.Ready.ProcSet (Action : Type u) (Name : Type v) :
Type (max v u)
Equations
Instances For
    @[instance_reducible]
    instance EqCheckingAbstractInterpretation.Ready.instSingletonCCSProcSet {Action : Type u} {Name : Type v} :
    Singleton (CCS.CCS Action Name) (ProcSet Action Name)
    Equations
    @[reducible, inline]
    Equations
    Instances For
      @[reducible, inline]
      abbrev EqCheckingAbstractInterpretation.Ready.DiffSysRS (Action : Type u) (Name : Type v) (Obs : Type w) :
      Type (max (max v u) w)
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Capability lattice elements from the paper: T, S, F, RS.

        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[reducible, inline]
            abbrev EqCheckingAbstractInterpretation.Ready.AbsSysRS (Action : Type u) (Name : Type v) :
            Type (max v u)
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[instance_reducible]
              Equations
              • One or more equations did not get rendered due to their size.
              theorem EqCheckingAbstractInterpretation.Ready.capJoin_mono {a a' b b' : Capability} (ha : capLe a a') (hb : capLe b b') :
              capLe (capJoin a b) (capJoin a' b')

              Capability requirement contributed by observation shape information.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                Capability abstraction without minimization/pruning.

                Equations
                Instances For

                  Minimal-capability pruning on capability predicates.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    def EqCheckingAbstractInterpretation.Ready.alphaCap {Obs : Type w} (ObsCap : Capability → Obs → Prop) (X : ObsSet Obs) :

                    Capability abstraction with pruning to minimal capabilities.

                    Equations
                    Instances For
                      def EqCheckingAbstractInterpretation.Ready.notPreorderAt {Action : Type u} {Name : Type v} {Obs : Type w} (ObsCap : Capability → Obs → Prop) (Diff : DiffSysRS Action Name Obs) (N : Capability) (p : CCS.CCS Action Name) (Q : ProcSet Action Name) :

                      Concrete threshold failure criterion for a difference relation.

                      Equations
                      Instances For
                        def EqCheckingAbstractInterpretation.Ready.abstractFailsAt {Action : Type u} {Name : Type v} (Abs : AbsSysRS Action Name) (N : Capability) (p : CCS.CCS Action Name) (Q : ProcSet Action Name) :

                        Abstract threshold failure criterion for a capability-valued analysis result.

                        Equations
                        Instances For

                          Monotonicity condition needed for threshold soundness/completeness: if a capability can observe o, then every stronger capability can observe o.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            theorem EqCheckingAbstractInterpretation.Ready.thresholdWitness_alphaCapRaw_iff {Obs : Type w} (ObsCap : Capability → Obs → Prop) (hMono : ObsCapMonotone ObsCap) (X : ObsSet Obs) (N : Capability) :
                            thresholdWitness (alphaCapRaw ObsCap X) N ↔ ∃ (o : Obs), X o ∧ ObsCap N o

                            Threshold reading for alphaCapRaw: it is equivalent to concrete intersection with the threshold fragment, under monotonicity of fragment observability.

                            theorem EqCheckingAbstractInterpretation.Ready.alphaCapRaw_upward_closed {Obs : Type w} (ObsCap : Capability → Obs → Prop) (hMono : ObsCapMonotone ObsCap) (X : ObsSet Obs) (N : Capability) :
                            upClosure (alphaCapRaw ObsCap X) N ↔ alphaCapRaw ObsCap X N
                            theorem EqCheckingAbstractInterpretation.Ready.upClosure_alphaCap_iff_alphaCapRaw {Obs : Type w} (ObsCap : Capability → Obs → Prop) (hMono : ObsCapMonotone ObsCap) (X : ObsSet Obs) (N : Capability) :
                            upClosure (alphaCap ObsCap X) N ↔ alphaCapRaw ObsCap X N
                            theorem EqCheckingAbstractInterpretation.Ready.thresholdWitness_alphaCap_iff {Obs : Type w} (ObsCap : Capability → Obs → Prop) (hMono : ObsCapMonotone ObsCap) (X : ObsSet Obs) (N : Capability) :
                            thresholdWitness (alphaCap ObsCap X) N ↔ ∃ (o : Obs), X o ∧ ObsCap N o

                            Threshold reading for alphaCap: pruning preserves threshold information.

                            theorem EqCheckingAbstractInterpretation.Ready.abstractFailsAt_iff_notPreorderAt_of_alpha {Action : Type u} {Name : Type v} {Obs : Type w} (ObsCap : Capability → Obs → Prop) (hMono : ObsCapMonotone ObsCap) (Diff : DiffSysRS Action Name Obs) (Abs : AbsSysRS Action Name) (hAlpha : ∀ (p : CCS.CCS Action Name) (Q : ProcSet Action Name) (c : Capability), Abs p Q c ↔ alphaCapRaw ObsCap (Diff p Q) c) (N : Capability) (p : CCS.CCS Action Name) (Q : ProcSet Action Name) :
                            abstractFailsAt Abs N p Q ↔ notPreorderAt ObsCap Diff N p Q

                            Unified threshold theorem at the level used in Section 5: if abstract values are pointwise alphaCapRaw of concrete differences, then abstract threshold witnesses are exactly concrete threshold failures.

                            theorem EqCheckingAbstractInterpretation.Ready.abstractFailsAt_iff_notPreorderAt_of_alphaExact {Action : Type u} {Name : Type v} {Obs : Type w} (ObsCap : Capability → Obs → Prop) (hMono : ObsCapMonotone ObsCap) (Diff : DiffSysRS Action Name Obs) (Abs : AbsSysRS Action Name) (hAlpha : ∀ (p : CCS.CCS Action Name) (Q : ProcSet Action Name) (c : Capability), Abs p Q c ↔ alphaCap ObsCap (Diff p Q) c) (N : Capability) (p : CCS.CCS Action Name) (Q : ProcSet Action Name) :
                            abstractFailsAt Abs N p Q ↔ notPreorderAt ObsCap Diff N p Q

                            Exact-pruned variant of the unified threshold theorem.

                            theorem EqCheckingAbstractInterpretation.Ready.abstractFailsAt_iff_notPreorderAt_of_lfp {Action : Type u} {Name : Type v} {Obs : Type w} (ObsCap : Capability → Obs → Prop) (hMono : ObsCapMonotone ObsCap) (lfpConcrete : DiffSysRS Action Name Obs) (lfpAbs : AbsSysRS Action Name) (hLfp : ∀ (p : CCS.CCS Action Name) (Q : ProcSet Action Name) (c : Capability), lfpAbs p Q c ↔ alphaCapRaw ObsCap (lfpConcrete p Q) c) (N : Capability) (p : CCS.CCS Action Name) (Q : ProcSet Action Name) :
                            abstractFailsAt lfpAbs N p Q ↔ notPreorderAt ObsCap lfpConcrete N p Q

                            Least-fixpoint variant matching the paper's Section 5 statement shape. lfpAbs is the abstract lfp result, lfpConcrete the concrete one.

                            theorem EqCheckingAbstractInterpretation.Ready.abstractFailsAt_iff_notPreorderAt_of_lfpExact {Action : Type u} {Name : Type v} {Obs : Type w} (ObsCap : Capability → Obs → Prop) (hMono : ObsCapMonotone ObsCap) (lfpConcrete : DiffSysRS Action Name Obs) (lfpAbs : AbsSysRS Action Name) (hLfp : ∀ (p : CCS.CCS Action Name) (Q : ProcSet Action Name) (c : Capability), lfpAbs p Q c ↔ alphaCap ObsCap (lfpConcrete p Q) c) (N : Capability) (p : CCS.CCS Action Name) (Q : ProcSet Action Name) :
                            abstractFailsAt lfpAbs N p Q ↔ notPreorderAt ObsCap lfpConcrete N p Q

                            Least-fixpoint threshold theorem for exact-pruned capability values.

                            Concrete observation syntax used to instantiate the unified capability framework: positive branching plus negative (refusal) tests.

                            Instances For
                              partial def EqCheckingAbstractInterpretation.Ready.instReprRSObs.repr {Action✝ : Type u_1} [Repr Action✝] :
                              RSObs Action✝ → Nat → Std.Format
                              def EqCheckingAbstractInterpretation.Ready.nodeRequirement (positiveCount : Nat) (hasNegative : Bool) (children : Capability) :

                              Combine a node's branching, refusal, and child capability requirements.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                Aggregate child capability requirements from positive branches.

                                Equations
                                Instances For

                                  Least capability needed to express a concrete ready-simulation observation.

                                  Equations
                                  Instances For
                                    theorem EqCheckingAbstractInterpretation.Ready.childrenReq_member_le {Action : Type u} {ao : Action × RSObs Action} {pos : List (Action × RSObs Action)} (hMem : ao ∈ pos) :
                                    theorem EqCheckingAbstractInterpretation.Ready.childrenReq_map_le {Action : Type u} (f : Action × RSObs Action → RSObs Action) (pos : List (Action × RSObs Action)) (hLe : ∀ (ao : Action × RSObs Action), ao ∈ pos → capLe (reqOfObs (f ao)) (reqOfObs ao.snd)) :
                                    capLe (childrenReq (List.map (fun (ao : Action × RSObs Action) => (ao.fst, f ao)) pos)) (childrenReq pos)
                                    theorem EqCheckingAbstractInterpretation.Ready.reqOfObs_node_map_le {Action : Type u} (f : Action × RSObs Action → RSObs Action) (pos : List (Action × RSObs Action)) (neg : List Action) (hLe : ∀ (ao : Action × RSObs Action), ao ∈ pos → capLe (reqOfObs (f ao)) (reqOfObs ao.snd)) :
                                    capLe (reqOfObs (RSObs.node (List.map (fun (ao : Action × RSObs Action) => (ao.fst, f ao)) pos) neg)) (reqOfObs (RSObs.node pos neg))
                                    def EqCheckingAbstractInterpretation.Ready.replaceChildren {Action : Type u} (pos : List (Action × RSObs Action)) (f : Fin pos.length → RSObs Action) :
                                    List (Action × RSObs Action)

                                    Replace children by branch occurrence rather than branch value.

                                    Equations
                                    Instances For
                                      theorem EqCheckingAbstractInterpretation.Ready.replaceChildren_length {Action : Type u} (pos : List (Action × RSObs Action)) (f : Fin pos.length → RSObs Action) :
                                      theorem EqCheckingAbstractInterpretation.Ready.replaceChildren_get {Action : Type u} (pos : List (Action × RSObs Action)) (f : Fin pos.length → RSObs Action) (i : Fin pos.length) :
                                      (replaceChildren pos f).get ⟨↑i, ⋯⟩ = ((pos.get i).fst, f i)
                                      theorem EqCheckingAbstractInterpretation.Ready.childrenReq_replaceChildren_le {Action : Type u} (pos : List (Action × RSObs Action)) (f : Fin pos.length → RSObs Action) (hLe : ∀ (i : Fin pos.length), capLe (reqOfObs (f i)) (reqOfObs (pos.get i).snd)) :
                                      theorem EqCheckingAbstractInterpretation.Ready.reqOfObs_node_replaceChildren_le {Action : Type u} (pos : List (Action × RSObs Action)) (neg : List Action) (f : Fin pos.length → RSObs Action) (hLe : ∀ (i : Fin pos.length), capLe (reqOfObs (f i)) (reqOfObs (pos.get i).snd)) :
                                      theorem EqCheckingAbstractInterpretation.Ready.rsObsCap_child {Action : Type u} {N : Capability} {pos : List (Action × RSObs Action)} {neg : List Action} {ao : Action × RSObs Action} (hCap : rsObsCap N (RSObs.node pos neg)) (hMem : ao ∈ pos) :
                                      theorem EqCheckingAbstractInterpretation.Ready.rsObsCap_S_node_neg_nil {Action : Type u} {pos : List (Action × RSObs Action)} {neg : List Action} (hCap : rsObsCap Capability.S (RSObs.node pos neg)) :
                                      neg = []
                                      theorem EqCheckingAbstractInterpretation.Ready.rsObsCap_T_node_neg_nil {Action : Type u} {pos : List (Action × RSObs Action)} {neg : List Action} (hCap : rsObsCap Capability.T (RSObs.node pos neg)) :
                                      neg = []
                                      theorem EqCheckingAbstractInterpretation.Ready.rsObsCap_F_node_no_branching {Action : Type u} {pos : List (Action × RSObs Action)} {neg : List Action} (hCap : rsObsCap Capability.F (RSObs.node pos neg)) :
                                      ¬1 < pos.length
                                      theorem EqCheckingAbstractInterpretation.Ready.rsObsCap_F_node_neg_nil_of_pos_ne_nil {Action : Type u} {pos : List (Action × RSObs Action)} {neg : List Action} (hCap : rsObsCap Capability.F (RSObs.node pos neg)) (hPos : pos ≠ []) :
                                      neg = []

                                      A failure observation with a positive branch has no refusal at that node.

                                      theorem EqCheckingAbstractInterpretation.Ready.rsObsCap_T_node_no_branching {Action : Type u} {pos : List (Action × RSObs Action)} {neg : List Action} (hCap : rsObsCap Capability.T (RSObs.node pos neg)) :
                                      ¬1 < pos.length