Documentation

VerifiedMBSE.Equivalence.ComponentEquiv

HoTT-Inspired Component Equivalence #

Defines PortEquiv (port interface equivalence), ComponentEquiv (component equivalence), Substitutable (substitutability), and transport_wellFormed (design-space transport).

Correspondence with HoTT #

PortCompatible: two ports are compatible (flowType and direction match).

Equations
Instances For
    structure VerifiedMBSE.Equivalence.PortEquiv (ports₁ ports₂ : List Core.PortDef) :

    PortEquiv: two port lists are structurally equivalent. In HoTT terms, PortBundle(A) ≃ PortBundle(B).

    Instances For

      PortEquiv is reflexive.

      theorem VerifiedMBSE.Equivalence.PortEquiv.symm {p₁ p₂ : List Core.PortDef} (h : PortEquiv p₁ p₂) :
      PortEquiv p₂ p₁

      PortEquiv is symmetric.

      theorem VerifiedMBSE.Equivalence.PortEquiv.trans {p₁ p₂ p₃ : List Core.PortDef} (h₁₂ : PortEquiv p₁ p₂) (h₂₃ : PortEquiv p₂ p₃) :
      PortEquiv p₁ p₃

      PortEquiv is transitive.

      ComponentEquiv: two PartDefs are equivalent. Port interfaces are equivalent and invariants are biconditional.

      Instances For

        ComponentEquiv is reflexive.

        ComponentEquiv is symmetric.

        ComponentEquiv is transitive.

        Substitutable: A can substitute for B (upward compatible). A weaker condition than ComponentEquiv.

        Instances For

          ComponentEquiv → Substitutable (special case of bidirectional equivalence).

          Substitutable is transitive.

          theorem VerifiedMBSE.Equivalence.transport_wellFormed (sys : Core.System) (a b : Core.PartDef) (hmem : a sys.parts) (hequiv : ComponentEquiv a b) :
          (∀ (p : Core.PartDef), p sys.partsp.invariant)b.invariant

          Replacing a component with an equivalent one preserves invariants. MBSE version of HoTT transport: (A = B) → P(A) → P(B).