# Theory Brake_System

    (*  File:       Brake_System.thy
        Copyright   2026  Ludwig-Maximilians-Universität (LMU) München
    *)
    ✐‹creator "Michael Kirsten, Ludwig-Maximilians-Universität München"›
    section ‹Brake System Model›

    theory Brake_System
      imports "Featherweight_OCL.UML_Main"
    begin

    text ‹
      Featherweight-OCL can only reason about one meta-model at a time.
      Hence, we will have one model containing the two classes ‹BrakeSystem› and
      ‹Namespace›, but pretend they are separate by omitting the overarching ‹OclAny›.
    ›

    subsection ‹Types›

    datatype 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t = mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (brakecomponent⇩o⇩i⇩d: oid)
      (brakecomponent⇩s⇩p⇩e⇩c⇩i⇩f⇩i⇩c⇩a⇩t⇩i⇩o⇩n⇩T⇩y⇩p⇩e: "string option")
      (brakecomponent⇩O⇩E⇩M⇩_⇩n⇩u⇩m⇩b⇩e⇩r: "int option")
      (brakecomponent⇩f⇩i⇩t⇩t⇩i⇩n⇩g⇩P⇩o⇩s⇩i⇩t⇩i⇩o⇩n: "string option")
      (brakecomponent⇩i⇩d: "string option")

    datatype 𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r = mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ― ‹Subclass of ‹BrakeComponent››
      (abssensor⇩o⇩i⇩d: "oid")
      (abssensor⇩s⇩p⇩e⇩c⇩i⇩f⇩i⇩c⇩a⇩t⇩i⇩o⇩n⇩T⇩y⇩p⇩e: "string option")
      (abssensor⇩O⇩E⇩M⇩_⇩n⇩u⇩m⇩b⇩e⇩r: "int option")
      (abssensor⇩f⇩i⇩t⇩t⇩i⇩n⇩g⇩P⇩o⇩s⇩i⇩t⇩i⇩o⇩n: "string option")
      (abssensor⇩i⇩d: "string option")
      (abssensor⇩s⇩e⇩n⇩s⇩o⇩r⇩T⇩y⇩p⇩e: "string option")
      (abssensor⇩f⇩i⇩t⇩t⇩i⇩n⇩g⇩D⇩e⇩p⇩t⇩h: "int option")
      (abssensor⇩n⇩u⇩m⇩b⇩e⇩r⇩O⇩f⇩P⇩i⇩n⇩s: "int option")
      (abssensor⇩l⇩e⇩n⇩g⇩t⇩h⇩I⇩n⇩M⇩M: "int option")

    datatype 𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e = mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ― ‹Subclass of ‹BrakeComponent››
      (brakehose⇩o⇩i⇩d: "oid")
      (brakehose⇩s⇩p⇩e⇩c⇩i⇩f⇩i⇩c⇩a⇩t⇩i⇩o⇩n⇩T⇩y⇩p⇩e: "string option")
      (brakehose⇩O⇩E⇩M⇩_⇩n⇩u⇩m⇩b⇩e⇩r: "int option")
      (brakehose⇩f⇩i⇩t⇩t⇩i⇩n⇩g⇩P⇩o⇩s⇩i⇩t⇩i⇩o⇩n: "string option")
      (brakehose⇩i⇩d: "string option")
      (brakehose⇩t⇩h⇩r⇩e⇩a⇩d⇩S⇩i⇩z⇩e⇩1: "string option")
      (brakehose⇩t⇩h⇩r⇩e⇩a⇩d⇩S⇩i⇩z⇩e⇩2: "string option")
      (brakehose⇩l⇩e⇩n⇩g⇩t⇩h⇩I⇩n⇩M⇩M: "int option")

    datatype 𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k = mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ― ‹Subclass of ‹BrakeComponent››
      (brakedisk⇩o⇩i⇩d: "oid")
      (brakedisk⇩s⇩p⇩e⇩c⇩i⇩f⇩i⇩c⇩a⇩t⇩i⇩o⇩n⇩T⇩y⇩p⇩e: "string option")
      (brakedisk⇩O⇩E⇩M⇩_⇩n⇩u⇩m⇩b⇩e⇩r: "int option")
      (brakedisk⇩f⇩i⇩t⇩t⇩i⇩n⇩g⇩P⇩o⇩s⇩i⇩t⇩i⇩o⇩n: "string option")
      (brakedisk⇩i⇩d: "string option")
      (brakedisk⇩d⇩i⇩a⇩m⇩e⇩t⇩e⇩r⇩I⇩n⇩M⇩M: "int option")
      (brakedisk⇩c⇩e⇩n⇩t⇩e⇩r⇩i⇩n⇩g⇩D⇩i⇩a⇩m⇩e⇩t⇩e⇩r⇩I⇩n⇩M⇩M: "int option")
      (brakedisk⇩r⇩i⇩m⇩H⇩o⇩l⇩e⇩N⇩u⇩m⇩b⇩e⇩r: "int option")
      (brakedisk⇩h⇩o⇩l⇩e⇩A⇩r⇩r⇩a⇩n⇩g⇩e⇩m⇩e⇩n⇩t⇩N⇩u⇩m⇩b⇩e⇩r: "int option")
      (brakedisk⇩b⇩o⇩l⇩t⇩H⇩o⇩l⇩e⇩C⇩i⇩r⇩c⇩l⇩e⇩I⇩n⇩M⇩M: "int option")
      (brakedisk⇩b⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k⇩T⇩h⇩i⇩c⇩k⇩n⇩e⇩s⇩s⇩I⇩n⇩M⇩M: "int option")
      (brakedisk⇩m⇩i⇩n⇩i⇩m⇩u⇩m⇩T⇩h⇩i⇩c⇩k⇩n⇩e⇩s⇩s⇩I⇩n⇩M⇩M: "int option")
      (brakedisk⇩v⇩e⇩n⇩t⇩i⇩l⇩a⇩t⇩e⇩d: "bool option")

    datatype 𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d = mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ― ‹Subclass of ‹BrakeComponent››
      (brakepad⇩o⇩i⇩d: "oid")
      (brakepad⇩s⇩p⇩e⇩c⇩i⇩f⇩i⇩c⇩a⇩t⇩i⇩o⇩n⇩T⇩y⇩p⇩e: "string option")
      (brakepad⇩O⇩E⇩M⇩_⇩n⇩u⇩m⇩b⇩e⇩r: "int option")
      (brakepad⇩f⇩i⇩t⇩t⇩i⇩n⇩g⇩P⇩o⇩s⇩i⇩t⇩i⇩o⇩n: "string option")
      (brakepad⇩i⇩d: "string option")
      (brakepad⇩w⇩e⇩a⇩r⇩W⇩a⇩r⇩n⇩i⇩n⇩g: "bool option")
      (brakepad⇩h⇩e⇩i⇩g⇩h⇩t⇩I⇩n⇩M⇩M: "int option")
      (brakepad⇩w⇩i⇩d⇩t⇩h⇩I⇩n⇩M⇩M: "int option")
      (brakepad⇩t⇩h⇩i⇩c⇩k⇩n⇩e⇩s⇩s⇩I⇩n⇩M⇩M: "int option")

    datatype 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r = mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ― ‹Subclass of ‹BrakeComponent››
      (brakecaliper⇩o⇩i⇩d: "oid")
      (brakecaliper⇩s⇩p⇩e⇩c⇩i⇩f⇩i⇩c⇩a⇩t⇩i⇩o⇩n⇩T⇩y⇩p⇩e: "string option")
      (brakecaliper⇩O⇩E⇩M⇩_⇩n⇩u⇩m⇩b⇩e⇩r: "int option")
      (brakecaliper⇩f⇩i⇩t⇩t⇩i⇩n⇩g⇩P⇩o⇩s⇩i⇩t⇩i⇩o⇩n: "string option")
      (brakecaliper⇩i⇩d: "string option")
      (brakecaliper⇩p⇩i⇩s⇩t⇩o⇩n⇩D⇩i⇩a⇩m⇩e⇩t⇩e⇩r⇩I⇩n⇩M⇩M: "int option")
      (brakecaliper⇩b⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k⇩T⇩h⇩i⇩c⇩k⇩n⇩e⇩s⇩s⇩I⇩n⇩M⇩M: "int option")

    datatype 𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r = mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (parameter⇩o⇩i⇩d: oid)
      (parameter⇩i⇩d: "string option")
      (parameter⇩n⇩a⇩m⇩e: "string option")
      (parameter⇩d⇩e⇩s⇩c⇩r⇩i⇩p⇩t⇩i⇩o⇩n: "string option")

    datatype 𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e = mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e (namespace⇩o⇩i⇩d: oid)
      (namespace⇩i⇩d: "string option")
      (namespace⇩n⇩a⇩m⇩e: "string option")
      (namespace⇩d⇩e⇩s⇩c⇩r⇩i⇩p⇩t⇩i⇩o⇩n: "string option")

    datatype 𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r = mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ― ‹Subclass of ‹Parameter››
      (numericparameter⇩o⇩i⇩d: oid)
      (numericparameter⇩i⇩d: "string option")
      (numericparameter⇩n⇩a⇩m⇩e: "string option")
      (numericparameter⇩d⇩e⇩s⇩c⇩r⇩i⇩p⇩t⇩i⇩o⇩n: "string option")
      (numericparameter⇩v⇩a⇩l⇩u⇩e: "real option") ― ‹Actually ‹float›, but we use ‹real››
      (numericparameter⇩u⇩n⇩i⇩t: "string option") ― ‹Actually ‹enum›, but we use ‹string››

    datatype 𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r = mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ― ‹Subclass of ‹Parameter››
      (stringparameter⇩o⇩i⇩d: oid)
      (stringparameter⇩i⇩d: "string option")
      (stringparameter⇩n⇩a⇩m⇩e: "string option")
      (stringparameter⇩d⇩e⇩s⇩c⇩r⇩i⇩p⇩t⇩i⇩o⇩n: "string option")
      (stringparameter⇩v⇩a⇩l⇩u⇩e: "string option")
      (stringparameter⇩u⇩n⇩i⇩t: "string option") ― ‹Actually ‹enum› class, but we just use ‹string››

    datatype 𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r = mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ― ‹Subclass of ‹Parameter››
      (booleanparameter⇩o⇩i⇩d: oid)
      (booleanparameter⇩i⇩d: "string option")
      (booleanparameter⇩n⇩a⇩m⇩e: "string option")
      (booleanparameter⇩d⇩e⇩s⇩c⇩r⇩i⇩p⇩t⇩i⇩o⇩n: "string option")
      (booleanparameter⇩v⇩a⇩l⇩u⇩e: "bool option")

    datatype 𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l = mk⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l (cad_model⇩o⇩i⇩d: oid)
      (cad_model⇩i⇩d: "string option")
      (cad_model⇩n⇩a⇩m⇩e: "string option")

    datatype 𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m = mk⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m (brakesystem⇩o⇩i⇩d: oid)
      (brakesystem⇩s⇩p⇩e⇩c⇩i⇩f⇩i⇩c⇩a⇩t⇩i⇩o⇩n⇩T⇩y⇩p⇩e: "string option")
      (brakesystem⇩i⇩n⇩s⇩t⇩a⇩n⇩c⇩e⇩N⇩a⇩m⇩e: "string option")

    datatype 𝔄 = in⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m 𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m |
            in⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t |
            in⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r 𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r | in⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r |
            in⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e 𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e | in⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k 𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k |
            in⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d 𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d | in⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l 𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l |
            in⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e 𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e | in⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r 𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r |
            in⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r 𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r |
            in⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r 𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r |
            in⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r 𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r

    subsection ‹OCL Type Correspondances›

    type_synonym Boolean             = "𝔄 Boolean"
    type_synonym Integer               = "𝔄 Integer"
    type_synonym String                = "𝔄 String"
    type_synonym Real                  = "𝔄 Real"
    type_synonym Void                  = "𝔄 Void"

    type_synonym BrakeSystem          = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m option option) val"
    type_synonym BrakeComponent     = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t option option) val"
    type_synonym ABSSensor            = "(𝔄, 𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r option option) val"
    type_synonym BrakeCaliper         = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r option option) val"
    type_synonym BrakeHose            = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e option option) val"
    type_synonym BrakeDisk            = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k option option) val"
    type_synonym BrakePad             = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d option option) val"
    type_synonym CAD_Model          = "(𝔄, 𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l option option) val"
    type_synonym Namespace            = "(𝔄, 𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e option option) val"
    type_synonym Parameter            = "(𝔄, 𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r option option) val"
    type_synonym NumericParameter = "(𝔄, 𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r option option) val"
    type_synonym StringParameter      = "(𝔄, 𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r option option) val"
    type_synonym BooleanParameter     = "(𝔄, 𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r option option) val"

    type_synonym Set_Boolean               = "(𝔄, bool option option) Set"
    type_synonym Set_Integer               = "(𝔄, int option option) Set"

    type_synonym Set_BrakeSystem        = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m option option) Set"
    type_synonym Set_BrakeComponent   = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t option option) Set"
    type_synonym Set_ABSSensor          = "(𝔄, 𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r option option) Set"
    type_synonym Set_BrakeCaliper       = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r option option) Set"
    type_synonym Set_BrakeHose          = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e option option) Set"
    type_synonym Set_BrakeDisk          = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k option option) Set"
    type_synonym Set_BrakePad           = "(𝔄, 𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d option option) Set"
    type_synonym Set_CAD_Model        = "(𝔄, 𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l option option) Set"
    type_synonym Set_Namespace          = "(𝔄, 𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e option option) Set"
    type_synonym Set_Parameter          = "(𝔄, 𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r option option) Set"
    type_synonym Set_NumericParameter =
      "(𝔄, 𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r option option) Set"
    type_synonym Set_StringParameter  = "(𝔄, 𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r option option) Set"
    type_synonym Set_BooleanParameter =
      "(𝔄, 𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r option option) Set"

    subsection ‹Type Object IDs›

    instantiation 𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m :: object
    begin
      definition oid_of_𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m[code_unfold]: "oid_of ≡ brakesystem⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: object
    begin
      definition oid_of_𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t[code_unfold]: "oid_of ≡ brakecomponent⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r :: object
    begin
      definition oid_of_𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r[code_unfold]: "oid_of ≡ abssensor⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r :: object
    begin
      definition oid_of_𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r[code_unfold]: "oid_of ≡ brakecaliper⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e :: object
    begin
      definition oid_of_𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e[code_unfold]: "oid_of ≡ brakehose⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k :: object
    begin
      definition oid_of_𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k[code_unfold]: "oid_of ≡ brakedisk⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d :: object
    begin
      definition oid_of_𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d[code_unfold]: "oid_of ≡ brakepad⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l :: object
    begin
      definition oid_of_𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l[code_unfold]: "oid_of ≡ cad_model⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e :: object
    begin
      definition oid_of_𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e[code_unfold]: "oid_of ≡ namespace⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: object
    begin
      definition oid_of_𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[code_unfold]: "oid_of ≡ parameter⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: object
    begin
      definition oid_of_𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[code_unfold]: "oid_of ≡ numericparameter⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: object
    begin
      definition oid_of_𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[code_unfold]: "oid_of ≡ stringparameter⇩o⇩i⇩d"
      instance ..
    end
    instantiation 𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: object
    begin
      definition oid_of_𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[code_unfold]: "oid_of ≡ booleanparameter⇩o⇩i⇩d"
      instance ..
    end

    instantiation 𝔄 :: object
    begin
      definition oid⇩𝔄[code_unfold]:
        "oid_of x ≡
      (case x of
        in⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m brakesystem ⇒ brakesystem⇩o⇩i⇩d brakesystem |
        in⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t brakecomponent ⇒ brakecomponent⇩o⇩i⇩d brakecomponent |
        in⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r abssensor ⇒ abssensor⇩o⇩i⇩d abssensor |
        in⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r brakecaliper ⇒ brakecaliper⇩o⇩i⇩d brakecaliper |
        in⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e brakehose ⇒ brakehose⇩o⇩i⇩d brakehose |
        in⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k brakedisk ⇒ brakedisk⇩o⇩i⇩d brakedisk |
        in⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d brakepad ⇒ brakepad⇩o⇩i⇩d brakepad |
        in⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l cad_model ⇒ cad_model⇩o⇩i⇩d cad_model |
        in⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e namespace ⇒ namespace⇩o⇩i⇩d namespace |
        in⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r parameter ⇒ parameter⇩o⇩i⇩d parameter |
        in⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r numericparameter ⇒
          numericparameter⇩o⇩i⇩d numericparameter |
        in⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r stringparameter ⇒ stringparameter⇩o⇩i⇩d stringparameter |
        in⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r booleanparameter ⇒
          booleanparameter⇩o⇩i⇩d booleanparameter)"
      instance ..
    end

    subsection ‹Auxiliary OCL Lemma›

    lemma singleton_set_size:
      fixes
        τ :: "𝔄 st" and
        a :: "'a"
      shows "Set{λ (_ :: 𝔄 st). ⌊⌊a⌋⌋}->size⇩S⇩e⇩t() τ = 𝟭 τ"
    proof -
      let ?set = "⌈⌈Rep_Set⇩b⇩a⇩s⇩e (Set{λ (_ :: 𝔄 st). ⌊⌊a⌋⌋} τ)⌉⌉"
      have
        "?set = {⌊⌊a⌋⌋}" and
        "card ?set = 1"
        by (simp_all add: OclIncluding_rep_set mtSet_rep_set)
      thus ?thesis
        unfolding UML_Set.OclSize_def OclInt1_def
        by simp
    qed

    subsection ‹Strict Equality Instantiation›

    overloading StrictRefEq ≡ "StrictRefEq :: [BrakeSystem, BrakeSystem] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m[code_unfold]:
        "(x::BrakeSystem) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq ::
      [BrakeComponent, BrakeComponent] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t[code_unfold]:
        "(x::BrakeComponent) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq :: [ABSSensor, ABSSensor] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r[code_unfold]:
        "(x::ABSSensor) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq :: [BrakeCaliper, BrakeCaliper] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r[code_unfold]:
        "(x::BrakeCaliper) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq :: [BrakeHose, BrakeHose] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e[code_unfold]:
        "(x::BrakeHose) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq :: [BrakeDisk, BrakeDisk] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k[code_unfold]:
        "(x::BrakeDisk) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq :: [BrakePad, BrakePad] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d[code_unfold]:
        "(x::BrakePad) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq :: [CAD_Model, CAD_Model] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l[code_unfold]:
        "(x::CAD_Model) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq :: [Namespace, Namespace] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e[code_unfold]:
        "(x::Namespace) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq :: [Parameter, Parameter] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[code_unfold]:
        "(x::Parameter) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq ::
      [NumericParameter, NumericParameter] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[code_unfold]:
        "(x::NumericParameter) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq ::
      [StringParameter, StringParameter] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[code_unfold]:
        "(x::StringParameter) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end
    overloading StrictRefEq ≡ "StrictRefEq ::
      [BooleanParameter, BooleanParameter] ⇒ Boolean"
    begin
      definition StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[code_unfold]:
        "(x::BooleanParameter) ≐ y ≡ StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
    end

    lemmas cps23 =
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeSystem" "y::BrakeSystem" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m[symmetric]]
        cp_intro(9)      [of "C::BrakeSystem ⇒ BrakeSystem"
                              "D::BrakeSystem ⇒ BrakeSystem",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::BrakeSystem" "y::BrakeSystem",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::BrakeSystem" "y::BrakeSystem",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::BrakeSystem",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::BrakeSystem",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeSystem" "y::BrakeSystem" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeComponent" "y::BrakeComponent" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t[symmetric]]
        cp_intro(9) [of "C::BrakeComponent ⇒ BrakeComponent"
                          "D::BrakeComponent ⇒ BrakeComponent",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::BrakeComponent" "y::BrakeComponent",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::BrakeComponent" "y::BrakeComponent",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::BrakeComponent",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::BrakeComponent",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeComponent" "y::BrakeComponent" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::ABSSensor" "y::ABSSensor" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r[symmetric]]
        cp_intro(9) [of "C::ABSSensor ⇒ ABSSensor" "D::ABSSensor ⇒ ABSSensor",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::ABSSensor" "y::ABSSensor",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::ABSSensor" "y::ABSSensor",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::ABSSensor", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::ABSSensor", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::ABSSensor" "y::ABSSensor" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeCaliper" "y::BrakeCaliper" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r[symmetric]]
        cp_intro(9) [of "C::BrakeCaliper ⇒ BrakeCaliper"
                          "D::BrakeCaliper ⇒ BrakeCaliper",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::BrakeCaliper" "y::BrakeCaliper",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::BrakeCaliper" "y::BrakeCaliper",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::BrakeCaliper",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::BrakeCaliper",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeCaliper" "y::BrakeCaliper" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeHose" "y::BrakeHose" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e[symmetric]]
        cp_intro(9) [of "C::BrakeHose ⇒ BrakeHose" "D::BrakeHose ⇒ BrakeHose",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::BrakeHose" "y::BrakeHose",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::BrakeHose" "y::BrakeHose",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::BrakeHose", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::BrakeHose", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeHose" "y::BrakeHose" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeDisk" "y::BrakeDisk" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k[symmetric]]
        cp_intro(9) [of "C::BrakeDisk ⇒ BrakeDisk" "D::BrakeDisk ⇒ BrakeDisk",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::BrakeDisk" "y::BrakeDisk",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::BrakeDisk" "y::BrakeDisk",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::BrakeDisk", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::BrakeDisk", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakeDisk" "y::BrakeDisk" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakePad" "y::BrakePad" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d[symmetric]]
        cp_intro(9) [of "C::BrakePad ⇒ BrakePad" "D::BrakePad ⇒ BrakePad",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::BrakePad" "y::BrakePad",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::BrakePad" "y::BrakePad",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::BrakePad", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::BrakePad", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BrakePad" "y::BrakePad" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::CAD_Model" "y::CAD_Model" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l[symmetric]]
        cp_intro(9) [of "C::CAD_Model ⇒ CAD_Model" "D::CAD_Model ⇒ CAD_Model",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::CAD_Model" "y::CAD_Model",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::CAD_Model" "y::CAD_Model",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::CAD_Model", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::CAD_Model", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::CAD_Model" "y::CAD_Model" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::Namespace" "y::Namespace" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e[symmetric]]
        cp_intro(9) [of "C::Namespace ⇒ Namespace" "D::Namespace ⇒ Namespace",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::Namespace" "y::Namespace",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::Namespace" "y::Namespace",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::Namespace", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::Namespace", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::Namespace" "y::Namespace" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::Parameter" "y::Parameter" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_intro(9) [of "C::Parameter ⇒ Parameter" "D::Parameter ⇒ Parameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::Parameter" "y::Parameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::Parameter" "y::Parameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::Parameter", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::Parameter", simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::Parameter" "y::Parameter" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::NumericParameter" "y::NumericParameter" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_intro(9) [of "C::NumericParameter ⇒ NumericParameter"
                        "D::NumericParameter ⇒ NumericParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::NumericParameter" "y::NumericParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::NumericParameter" "y::NumericParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::NumericParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::NumericParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::NumericParameter" "y::NumericParameter" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::StringParameter" "y::StringParameter" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_intro(9) [of "C::StringParameter ⇒ StringParameter"
                        "D::StringParameter ⇒ StringParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::StringParameter" "y::StringParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::StringParameter" "y::StringParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::StringParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::StringParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::StringParameter" "y::StringParameter" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BooleanParameter" "y::BooleanParameter" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_intro(9) [of "C::BooleanParameter ⇒ BooleanParameter"
                        "D::BooleanParameter ⇒ BooleanParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric] ]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_def     [of "x::BooleanParameter" "y::BooleanParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_defargs [of _ "x::BooleanParameter" "y::BooleanParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict1 [of "x::BooleanParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t_strict2 [of "x::BooleanParameter",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
        cp_StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t[of "x::BooleanParameter" "y::BooleanParameter" "τ::𝔄 st",
                        simplified StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r[symmetric]]
      for x y τ C D

    lemma[code_unfold]: "((x::BrakeSystem) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m)
    lemma[code_unfold]: "((x::BrakeComponent) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t)
    lemma[code_unfold]: "((x::ABSSensor) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)
    lemma[code_unfold]: "((x::BrakeCaliper) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)
    lemma[code_unfold]: "((x::BrakeHose) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)
    lemma[code_unfold]: "((x::BrakeDisk) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)
    lemma[code_unfold]: "((x::BrakePad) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)
    lemma[code_unfold]: "((x::CAD_Model) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l)
    lemma[code_unfold]: "((x::Namespace) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e)
    lemma[code_unfold]: "((x::Parameter) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma[code_unfold]: "((x::NumericParameter) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma[code_unfold]: "((x::StringParameter) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma[code_unfold]: "((x::BooleanParameter) ≐ y) = StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t x y"
      by(simp only: StrictRefEq⇩O⇩b⇩j⇩e⇩c⇩t⇩_⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)

    subsection ‹OCL Usage of OclAsType›

    consts OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m :: "'α ⇒ BrakeSystem" ("(_) .oclAsType'(BrakeSystem')")
    consts OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: "'α ⇒ BrakeComponent" ("(_) .oclAsType'(BrakeComponent')")
    consts OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r :: "'α ⇒ ABSSensor" ("(_) .oclAsType'(ABSSensor')")
    consts OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r :: "'α ⇒ BrakeCaliper" ("(_) .oclAsType'(BrakeCaliper')")
    consts OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e :: "'α ⇒ BrakeHose" ("(_) .oclAsType'(BrakeHose')")
    consts OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k :: "'α ⇒ BrakeDisk" ("(_) .oclAsType'(BrakeDisk')")
    consts OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d :: "'α ⇒ BrakePad" ("(_) .oclAsType'(BrakePad')")
    consts OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l :: "'α ⇒ CAD_Model" ("(_) .oclAsType'(CAD'_Model')")
    consts OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e :: "'α ⇒ Namespace" ("(_) .oclAsType'(Namespace')")
    consts OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ Parameter" ("(_) .oclAsType'(Parameter')")
    consts OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ NumericParameter" ("(_) .oclAsType'(NumericParameter')")
    consts OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ StringParameter" ("(_) .oclAsType'(StringParameter')")
    consts OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ BooleanParameter" ("(_) .oclAsType'(BooleanParameter')")

    subsubsection ‹Auxiliary Definitions›

    definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m⟩⇩⊥" where
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m (v::𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m) ⇒ v⌋)"
    definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t⟩⇩⊥" where
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (v::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t) ⇒ v |
                           in⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r oid a b c d _ _ _ _) ⇒
                              mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d |
                           in⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r oid a b c d _ _) ⇒
                              mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d |
                           in⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e oid a b c d _ _ _) ⇒
                              mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d |
                           in⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k oid a b c d _ _ _ _ _ _ _ _) ⇒
                              mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d |
                           in⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d oid a b c d _ _ _ _) ⇒
                              mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d⌋)"
    definition OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r⟩⇩⊥" where
      "OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (v::𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r) ⇒ v⌋)"
    definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r⟩⇩⊥" where
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (v::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r) ⇒ v⌋)"
    definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e⟩⇩⊥" where
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (v::𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e) ⇒ v⌋)"
    definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k⟩⇩⊥" where
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (v::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k) ⇒ v⌋)"
    definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d⟩⇩⊥" where
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (v::𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d) ⇒ v⌋)"
    definition OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l⟩⇩⊥" where
      "OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l (v::𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l) ⇒ v⌋)"
    definition OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e⟩⇩⊥" where
      "OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e (v::𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e) ⇒ v⌋)"
    definition OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥" where
      "OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (v::𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r) ⇒ v |
                           in⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c _ _) ⇒
                              mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c |
                           in⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c _ _) ⇒
                              mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c |
                           in⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c _) ⇒
                              mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c⌋)"
    definition OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥" where
      "OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (v::𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r) ⇒ v⌋)"
    definition OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥" where
      "OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (v::𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r) ⇒ v⌋)"
    definition OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 :: "𝔄 ⇒ ⟨𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥" where
      "OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 ≡
        (λ u::𝔄. ⌊case u of in⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (v::𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r) ⇒ v⌋)"

    lemmas [simp] =
      OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_𝔄_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_𝔄_def
      OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_𝔄_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_𝔄_def
      OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_𝔄_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_𝔄_def
      OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_𝔄_def OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_𝔄_def
      OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_𝔄_def OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄_def
      OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄_def OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄_def
      OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄_def

    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 x ≠ None"
      by simp
    lemma OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄_some:
      fixes x :: "𝔄"
      shows "OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄 x ≠ None"
      by simp

    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ≡ "OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ::
      BrakeSystem ⇒ BrakeSystem"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem[code_unfold]:
        "(X::BrakeSystem) .oclAsType(BrakeSystem) ≡ X"
    end
    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakeComponent ⇒ BrakeComponent"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent[code_unfold]:
        "(X::BrakeComponent) .oclAsType(BrakeComponent) ≡ X"
    end
    overloading OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ "OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ::
      ABSSensor ⇒ ABSSensor"
    begin
      definition OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor[code_unfold]:
        "(X::ABSSensor) .oclAsType(ABSSensor) ≡ X"
    end
    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ≡ "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ::
      BrakeCaliper ⇒ BrakeCaliper"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper[code_unfold]:
        "(X::BrakeCaliper) .oclAsType(BrakeCaliper) ≡ X"
    end
    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ "OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ::
      BrakeHose ⇒ BrakeHose"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose[code_unfold]:
        "(X::BrakeHose) .oclAsType(BrakeHose) ≡ X"
    end
    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ "OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ::
      BrakeDisk ⇒ BrakeDisk"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk[code_unfold]:
        "(X::BrakeDisk) .oclAsType(BrakeDisk) ≡ X"
    end
    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ "OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ::
      BrakePad ⇒ BrakePad"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad[code_unfold]:
        "(X::BrakePad) .oclAsType(BrakePad) ≡ X"
    end
    overloading OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ≡ "OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ::
      CAD_Model ⇒ CAD_Model"
    begin
      definition OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model[code_unfold]:
        "(X::CAD_Model) .oclAsType(CAD_Model) ≡ X"
    end
    overloading OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ≡ "OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ::
      Namespace ⇒ Namespace"
    begin
      definition OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace[code_unfold]:
        "(X::Namespace) .oclAsType(Namespace) ≡ X"
    end
    overloading OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      Parameter ⇒ Parameter"
    begin
      definition OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter[code_unfold]:
        "(X::Parameter) .oclAsType(Parameter) ≡ X"
    end
    overloading OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡
      "OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: NumericParameter ⇒ NumericParameter"
    begin
      definition OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter[code_unfold]:
        "(X::NumericParameter) .oclAsType(NumericParameter) ≡ X"
    end
    overloading OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
                                            StringParameter ⇒ StringParameter"
    begin
      definition OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter[code_unfold]:
        "(X::StringParameter) .oclAsType(StringParameter) ≡ X"
    end
    overloading OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡
      "OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: BooleanParameter ⇒ BooleanParameter"
    begin
      definition OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter[code_unfold]:
        "(X::BooleanParameter) .oclAsType(BooleanParameter) ≡ X"
    end

    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: ABSSensor ⇒ BrakeComponent"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor:
          "(X::ABSSensor) .oclAsType(BrakeComponent) ≡
                    (λτ . case X τ of
                              ⊥ ⇒ invalid τ
                           | ⌊⊥⌋ ⇒ null τ
                           | ⌊⌊mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r oid a b c d _ _ _ _⌋⌋ ⇒
                                ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d⌋⌋)"
    end
    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: BrakeHose ⇒ BrakeComponent"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose:
          "(X::BrakeHose) .oclAsType(BrakeComponent) ≡
                    (λτ . case X τ of
                              ⊥ ⇒ invalid τ
                           | ⌊⊥⌋ ⇒ null τ
                           | ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e oid a b c d _ _ _⌋⌋ ⇒
                                ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d⌋⌋)"
    end
    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: BrakeDisk ⇒ BrakeComponent"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk:
          "(X::BrakeDisk) .oclAsType(BrakeComponent) ≡
                    (λτ . case X τ of
                              ⊥ ⇒ invalid τ
                           | ⌊⊥⌋ ⇒ null τ
                           | ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k oid a b c d _ _ _ _ _ _ _ _⌋⌋ ⇒
                                ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d⌋⌋)"
    end
    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: BrakePad ⇒ BrakeComponent"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad:
          "(X::BrakePad) .oclAsType(BrakeComponent) ≡
                    (λτ . case X τ of
                              ⊥ ⇒ invalid τ
                           | ⌊⊥⌋ ⇒ null τ
                           | ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d oid a b c d _ _ _ _⌋⌋ ⇒
                                ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d⌋⌋)"
    end
    overloading OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡
      "OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: BrakeCaliper ⇒ BrakeComponent"
    begin
      definition OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper:
          "(X::BrakeCaliper) .oclAsType(BrakeComponent) ≡
                    (λτ . case X τ of
                              ⊥ ⇒ invalid τ
                           | ⌊⊥⌋ ⇒ null τ
                           | ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r oid a b c d _ _⌋⌋ ⇒
                                ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid a b c d⌋⌋)"
    end
    overloading OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡
      "OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: NumericParameter ⇒ Parameter"
    begin
      definition OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter:
          "(X::NumericParameter) .oclAsType(Parameter) ≡
                    (λτ . case X τ of
                              ⊥ ⇒ invalid τ
                           | ⌊⊥⌋ ⇒ null τ
                           | ⌊⌊mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c _ _⌋⌋ ⇒
                                ⌊⌊mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c⌋⌋)"
    end
    overloading OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡
      "OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: StringParameter ⇒ Parameter"
    begin
      definition OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter:
          "(X::StringParameter) .oclAsType(Parameter) ≡
                    (λτ . case X τ of
                              ⊥ ⇒ invalid τ
                           | ⌊⊥⌋ ⇒ null τ
                           | ⌊⌊mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c _ _⌋⌋ ⇒
                                ⌊⌊mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c⌋⌋)"
    end
    overloading OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡
      "OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: BooleanParameter ⇒ Parameter"
    begin
      definition OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter:
          "(X::BooleanParameter) .oclAsType(Parameter) ≡
                    (λτ . case X τ of
                              ⊥ ⇒ invalid τ
                           | ⌊⊥⌋ ⇒ null τ
                           | ⌊⌊mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c _⌋⌋ ⇒
                                ⌊⌊mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid a b c⌋⌋)"
    end

    subsubsection ‹Context Passing›

    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakeComponent:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::BrakeComponent) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor_ABSSensor:
      "cp P ⟹ cp(λX . (P (X ::ABSSensor)::ABSSensor) .oclAsType(ABSSensor))"
      by(rule cpI1, simp_all add: OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper_BrakeCaliper:
      "cp P ⟹ cp(λX . (P (X ::BrakeCaliper)::BrakeCaliper) .oclAsType(BrakeCaliper))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose_BrakeHose:
      "cp P ⟹ cp(λX . (P (X ::BrakeHose)::BrakeHose) .oclAsType(BrakeHose))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk_BrakeDisk:
      "cp P ⟹ cp(λX . (P (X ::BrakeDisk)::BrakeDisk) .oclAsType(BrakeDisk))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad_BrakePad:
      "cp P ⟹ cp(λX . (P (X ::BrakePad)::BrakePad) .oclAsType(BrakePad))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad)
    lemma cp_OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_NumericParameter:
      "cp P ⟹ cp(λX . (P (X ::NumericParameter)::NumericParameter) .oclAsType(NumericParameter))"
      by(rule cpI1, simp_all add: OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma cp_OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_StringParameter:
      "cp P ⟹ cp(λX . (P (X ::StringParameter)::StringParameter) .oclAsType(StringParameter))"
      by(rule cpI1, simp_all add: OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma cp_OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_BooleanParameter:
      "cp P ⟹ cp(λX . (P (X ::BooleanParameter)::BooleanParameter) .oclAsType(BooleanParameter))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)

    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor_ABSSensor:
      "cp P ⟹ cp(λX . (P (X ::ABSSensor)::ABSSensor) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor_BrakeComponent:
      "cp P ⟹ cp(λX . (P (X ::ABSSensor)::BrakeComponent) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_ABSSensor:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::ABSSensor) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor)
    lemma cp_OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_BrakeComponent_ABSSensor:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::ABSSensor) .oclAsType(ABSSensor))"
      by(rule cpI1, simp_all add: OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper_BrakeCaliper:
      "cp P ⟹ cp(λX . (P (X ::BrakeCaliper)::BrakeCaliper) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper_BrakeComponent:
      "cp P ⟹ cp(λX . (P (X ::BrakeCaliper)::BrakeComponent) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakeCaliper:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::BrakeCaliper) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeComponent_BrakeCaliper:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::BrakeCaliper) .oclAsType(BrakeCaliper))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose_BrakeHose:
      "cp P ⟹ cp(λX . (P (X ::BrakeHose)::BrakeHose) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose_BrakeComponent:
      "cp P ⟹ cp(λX . (P (X ::BrakeHose)::BrakeComponent) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakeHose:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::BrakeHose) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeComponent_BrakeHose:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::BrakeHose) .oclAsType(BrakeHose))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk_BrakeDisk:
      "cp P ⟹ cp(λX . (P (X ::BrakeDisk)::BrakeDisk) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk_BrakeComponent:
      "cp P ⟹ cp(λX . (P (X ::BrakeDisk)::BrakeComponent) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakeDisk:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::BrakeDisk) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeComponent_BrakeDisk:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::BrakeDisk) .oclAsType(BrakeDisk))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad_BrakePad:
      "cp P ⟹ cp(λX . (P (X ::BrakePad)::BrakePad) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad_BrakeComponent:
      "cp P ⟹ cp(λX . (P (X ::BrakePad)::BrakeComponent) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakePad:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::BrakePad) .oclAsType(BrakeComponent))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad)
    lemma cp_OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakeComponent_BrakePad:
      "cp P ⟹ cp(λX . (P (X ::BrakeComponent)::BrakePad) .oclAsType(BrakePad))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad)
    lemma cp_OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_NumericParameter:
      "cp P ⟹ cp(λX . (P (X ::NumericParameter)::NumericParameter) .oclAsType(Parameter))"
      by(rule cpI1, simp_all add: OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma cp_OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_Parameter:
      "cp P ⟹ cp(λX . (P (X ::NumericParameter)::Parameter) .oclAsType(Parameter))"
      by(rule cpI1, simp_all add: OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter)
    lemma cp_OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_NumericParameter:
      "cp P ⟹ cp(λX . (P (X ::Parameter)::NumericParameter) .oclAsType(Parameter))"
      by(rule cpI1, simp_all add: OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma cp_OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_NumericParameter:
      "cp P ⟹ cp(λX . (P (X ::Parameter)::NumericParameter) .oclAsType(NumericParameter))"
      by(rule cpI1, simp_all add: OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma cp_OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_StringParameter:
      "cp P ⟹ cp(λX . (P (X ::StringParameter)::StringParameter) .oclAsType(Parameter))"
      by(rule cpI1, simp_all add: OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma cp_OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_Parameter:
      "cp P ⟹ cp(λX . (P (X ::StringParameter)::Parameter) .oclAsType(Parameter))"
      by(rule cpI1, simp_all add: OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter)
    lemma cp_OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_StringParameter:
      "cp P ⟹ cp(λX . (P (X ::Parameter)::StringParameter) .oclAsType(Parameter))"
      by(rule cpI1, simp_all add: OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma cp_OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_StringParameter:
      "cp P ⟹ cp(λX . (P (X ::Parameter)::StringParameter) .oclAsType(StringParameter))"
      by(rule cpI1, simp_all add: OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma cp_OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_BooleanParameter:
      "cp P ⟹ cp(λX . (P (X ::BooleanParameter)::BooleanParameter) .oclAsType(Parameter))"
      by(rule cpI1, simp_all add: OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)
    lemma cp_OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_Parameter:
      "cp P ⟹ cp(λX . (P (X ::BooleanParameter)::Parameter) .oclAsType(Parameter))"
      by(rule cpI1, simp_all add: OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter)
    lemma cp_OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_BooleanParameter:
      "cp P ⟹ cp(λX . (P (X ::Parameter)::BooleanParameter) .oclAsType(Parameter))"
      by(rule cpI1, simp_all add: OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)
    lemma cp_OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_BooleanParameter:
      "cp P ⟹ cp(λX . (P (X ::Parameter)::BooleanParameter) .oclAsType(BooleanParameter))"
      by(rule cpI1, simp_all add: OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)

    lemmas [simp] =
      OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent
      OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper
      OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk
      OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model
      OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter
      OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter
      OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter

    subsubsection ‹Execution with Invalid or Null as Argument›

    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem_strict:
      "(invalid::BrakeSystem) .oclAsType(BrakeSystem) = invalid"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem_nullstrict:
      "(null::BrakeSystem) .oclAsType(BrakeSystem) = null"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_strict:
      "(invalid::BrakeComponent) .oclAsType(BrakeComponent) = invalid"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_nullstrict:
      "(null::BrakeComponent) .oclAsType(BrakeComponent) = null"
      by simp
    lemma OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor_strict:
      "(invalid::ABSSensor) .oclAsType(ABSSensor) = invalid"
      by simp
    lemma OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor_nullstrict:
      "(null::ABSSensor) .oclAsType(ABSSensor) = null"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper_strict:
      "(invalid::BrakeCaliper) .oclAsType(BrakeCaliper) = invalid"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper_nullstrict:
      "(null::BrakeCaliper) .oclAsType(BrakeCaliper) = null"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose_strict:
      "(invalid::BrakeHose) .oclAsType(BrakeHose) = invalid"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose_nullstrict:
      "(null::BrakeHose) .oclAsType(BrakeHose) = null"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk_strict:
      "(invalid::BrakeDisk) .oclAsType(BrakeDisk) = invalid"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk_nullstrict:
      "(null::BrakeDisk) .oclAsType(BrakeDisk) = null"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad_strict:
      "(invalid::BrakePad) .oclAsType(BrakePad) = invalid"
      by simp
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad_nullstrict:
      "(null::BrakePad) .oclAsType(BrakePad) = null"
      by simp
    lemma OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model_strict:
      "(invalid::CAD_Model) .oclAsType(CAD_Model) = invalid"
      by simp
    lemma OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model_nullstrict:
      "(null::CAD_Model) .oclAsType(CAD_Model) = null"
      by simp
    lemma OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace_strict:
      "(invalid::Namespace) .oclAsType(Namespace) = invalid"
      by simp
    lemma OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace_nullstrict:
      "(null::Namespace) .oclAsType(Namespace) = null"
      by simp
    lemma OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_strict:
      "(invalid::Parameter) .oclAsType(Parameter) = invalid"
      by simp
    lemma OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_nullstrict:
      "(null::Parameter) .oclAsType(Parameter) = null"
      by simp
    lemma OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_strict:
      "(invalid::NumericParameter) .oclAsType(NumericParameter) = invalid"
      by simp
    lemma OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_nullstrict:
      "(null::NumericParameter) .oclAsType(NumericParameter) = null"
      by simp
    lemma OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_strict:
      "(invalid::StringParameter) .oclAsType(StringParameter) = invalid"
      by simp
    lemma OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_nullstrict:
      "(null::StringParameter) .oclAsType(StringParameter) = null"
      by simp
    lemma OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_strict:
      "(invalid::BooleanParameter) .oclAsType(BooleanParameter) = invalid"
      by simp
    lemma OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_nullstrict:
      "(null::BooleanParameter) .oclAsType(BooleanParameter) = null"
      by simp

    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor_strict[simp]:
      "(invalid::ABSSensor) .oclAsType(BrakeComponent) = invalid"
      by(rule ext, simp add: bot_option_def invalid_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor)
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor_nullstrict[simp]:
      "(null::ABSSensor) .oclAsType(BrakeComponent) = null"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor)
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper_strict[simp]:
      "(invalid::BrakeCaliper) .oclAsType(BrakeComponent) = invalid"
      by(rule ext, simp add: bot_option_def invalid_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper)
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper_nullstrict[simp]:
      "(null::BrakeCaliper) .oclAsType(BrakeComponent) = null"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper)
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose_strict[simp]:
      "(invalid::BrakeHose) .oclAsType(BrakeComponent) = invalid"
      by(rule ext, simp add: bot_option_def invalid_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose)
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose_nullstrict[simp]:
      "(null::BrakeHose) .oclAsType(BrakeComponent) = null"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose)
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk_strict[simp]:
      "(invalid::BrakeDisk) .oclAsType(BrakeComponent) = invalid"
      by(rule ext, simp add: bot_option_def invalid_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk)
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk_nullstrict[simp]:
      "(null::BrakeDisk) .oclAsType(BrakeComponent) = null"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk)
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad_strict[simp]:
      "(invalid::BrakePad) .oclAsType(BrakeComponent) = invalid"
      by(rule ext, simp add: bot_option_def invalid_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad)
    lemma OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad_nullstrict[simp]:
      "(null::BrakePad) .oclAsType(BrakeComponent) = null"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad)
    lemma OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_strict[simp]:
      "(invalid::NumericParameter) .oclAsType(Parameter) = invalid"
      by(rule ext, simp add: bot_option_def invalid_def OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_nullstrict[simp]:
      "(null::NumericParameter) .oclAsType(Parameter) = null"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_strict[simp]:
      "(invalid::StringParameter) .oclAsType(Parameter) = invalid"
      by(rule ext, simp add: bot_option_def invalid_def OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_nullstrict[simp]:
      "(null::StringParameter) .oclAsType(Parameter) = null"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_strict[simp]:
      "(invalid::BooleanParameter) .oclAsType(Parameter) = invalid"
      by(rule ext, simp add: bot_option_def invalid_def OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)
    lemma OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_nullstrict[simp]:
      "(null::BooleanParameter) .oclAsType(Parameter) = null"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)

    subsection ‹OCL Usage of OclIsTypeOf›

    consts OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(BrakeSystem')")
    consts OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(BrakeComponent')")
    consts OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(ABSSensor')")
    consts OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(BrakeCaliper')")
    consts OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(BrakeHose')")
    consts OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(BrakeDisk')")
    consts OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(BrakePad')")
    consts OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(CAD'_Model')")
    consts OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(Namespace')")
    consts OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(Parameter')")
    consts OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(NumericParameter')")
    consts OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(StringParameter')")
    consts OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsTypeOf'(BooleanParameter')")

    subsubsection ‹Auxiliary Definitions›

    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ::
      BrakeSystem ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem[code_unfold]:
          "(X::BrakeSystem) .oclIsTypeOf(BrakeSystem) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakeComponent ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent[code_unfold]:
          "(X::BrakeComponent) .oclIsTypeOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ "OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ::
      ABSSensor ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor[code_unfold]:
          "(X::ABSSensor) .oclIsTypeOf(ABSSensor) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ::
      BrakeCaliper ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper[code_unfold]:
          "(X::BrakeCaliper) .oclIsTypeOf(BrakeCaliper) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ::
      BrakeHose ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose[code_unfold]:
          "(X::BrakeHose) .oclIsTypeOf(BrakeHose) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ::
      BrakeDisk ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk[code_unfold]:
          "(X::BrakeDisk) .oclIsTypeOf(BrakeDisk) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ::
      BrakePad ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad[code_unfold]:
          "(X::BrakePad) .oclIsTypeOf(BrakePad) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ≡ "OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ::
      CAD_Model ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model[code_unfold]:
          "(X::CAD_Model) .oclIsTypeOf(CAD_Model) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ≡ "OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ::
      Namespace ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace[code_unfold]:
          "(X::Namespace) .oclIsTypeOf(Namespace) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      Parameter ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter[code_unfold]:
          "(X::Parameter) .oclIsTypeOf(Parameter) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      NumericParameter ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter[code_unfold]:
          "(X::NumericParameter) .oclIsTypeOf(NumericParameter) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      StringParameter ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter[code_unfold]:
          "(X::StringParameter) .oclIsTypeOf(StringParameter) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end
    overloading OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      BooleanParameter ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter[code_unfold]:
          "(X::BooleanParameter) .oclIsTypeOf(BooleanParameter) ≡ (λ τ :: (𝔄 st).
                  case X τ of
                    ⊥ ⇒ invalid τ |
                    _ ⇒ true τ)"
    end

    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      ABSSensor ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor[code_unfold]:
          "(X::ABSSensor) .oclIsTypeOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                 ⌊⊥⌋ ⇒ true τ ― ‹invalid ??› |
                 ⌊⌊_⌋⌋ ⇒ false τ ) ― ‹must have actual type ABSSensor otherwise›"
    end
    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakeCaliper ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper[code_unfold]:
          "(X::BrakeCaliper) .oclIsTypeOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                 ⌊⊥⌋ ⇒ true τ ― ‹invalid ??› |
                 ⌊⌊_⌋⌋ ⇒ false τ ) ― ‹must have actual type BrakeCaliper otherwise›"
    end
    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakeHose ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose[code_unfold]:
          "(X::BrakeHose) .oclIsTypeOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                 ⌊⊥⌋ ⇒ true τ ― ‹invalid ??› |
                 ⌊⌊_⌋⌋ ⇒ false τ ) ― ‹must have actual type BrakeHose otherwise›"
    end
    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakeDisk ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk[code_unfold]:
          "(X::BrakeDisk) .oclIsTypeOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                 ⌊⊥⌋ ⇒ true τ ― ‹invalid ??› |
                 ⌊⌊_⌋⌋ ⇒ false τ ) ― ‹must have actual type BrakeDisk otherwise›"
    end
    overloading OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakePad ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad[code_unfold]:
          "(X::BrakePad) .oclIsTypeOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                 ⌊⊥⌋ ⇒ true τ ― ‹invalid ??› |
                 ⌊⌊_⌋⌋ ⇒ false τ ) ― ‹must have actual type BrakePad otherwise›"
    end
    overloading OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      NumericParameter ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter[code_unfold]:
          "(X::NumericParameter) .oclIsTypeOf(Parameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                 ⌊⊥⌋ ⇒ true τ ― ‹invalid ??› |
                 ⌊⌊_⌋⌋ ⇒ false τ ) ― ‹must have actual type NumericParameter otherwise›"
    end
    overloading OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      StringParameter ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter[code_unfold]:
          "(X::StringParameter) .oclIsTypeOf(Parameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                 ⌊⊥⌋ ⇒ true τ ― ‹invalid ??› |
                 ⌊⌊_⌋⌋ ⇒ false τ ) ― ‹must have actual type StringParameter otherwise›"
    end
    overloading OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      BooleanParameter ⇒ Boolean"
    begin
      definition OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter[code_unfold]:
          "(X::BooleanParameter) .oclIsTypeOf(Parameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                 ⌊⊥⌋ ⇒ true τ ― ‹invalid ??› |
                 ⌊⌊_⌋⌋ ⇒ false τ ) ― ‹must have actual type BooleanParameter otherwise›"
    end

    subsubsection ‹Context Passing›

    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor_ABSSensor:
      "cp P ⟹ cp(λX .(P(X::ABSSensor)::ABSSensor).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor_BrakeComponent:
      "cp P ⟹ cp(λX .(P(X::ABSSensor)::BrakeComponent).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_ABSSensor:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::ABSSensor).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor)
    lemma cp_OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_BrakeComponent_ABSSensor:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::ABSSensor).oclIsTypeOf(ABSSensor))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper_BrakeCaliper:
      "cp P ⟹ cp(λX .(P(X::BrakeCaliper)::BrakeCaliper).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper_BrakeComponent:
      "cp P ⟹ cp(λX .(P(X::BrakeCaliper)::BrakeComponent).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakeCaliper:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::BrakeCaliper).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeComponent_BrakeCaliper:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::BrakeCaliper).oclIsTypeOf(BrakeCaliper))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose_BrakeHose:
      "cp P ⟹ cp(λX .(P(X::BrakeHose)::BrakeHose).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose_BrakeComponent:
      "cp P ⟹ cp(λX .(P(X::BrakeHose)::BrakeComponent).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakeHose:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::BrakeHose).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeComponent_BrakeHose:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::BrakeHose).oclIsTypeOf(BrakeHose))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk_BrakeDisk:
      "cp P ⟹ cp(λX .(P(X::BrakeDisk)::BrakeDisk).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk_BrakeComponent:
      "cp P ⟹ cp(λX .(P(X::BrakeDisk)::BrakeComponent).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakeDisk:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::BrakeDisk).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeComponent_BrakeDisk:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::BrakeDisk).oclIsTypeOf(BrakeDisk))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad_BrakePad:
      "cp P ⟹ cp(λX .(P(X::BrakePad)::BrakePad).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad_BrakeComponent:
      "cp P ⟹ cp(λX .(P(X::BrakePad)::BrakeComponent).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakePad:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::BrakePad).oclIsTypeOf(BrakeComponent))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad)
    lemma cp_OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakeComponent_BrakePad:
      "cp P ⟹ cp(λX .(P(X::BrakeComponent)::BrakePad).oclIsTypeOf(BrakePad))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad)
    lemma cp_OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_NumericParameter:
      "cp P ⟹ cp(λX .(P(X::NumericParameter)::NumericParameter).oclIsTypeOf(Parameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma cp_OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_Parameter:
      "cp P ⟹ cp(λX .(P(X::NumericParameter)::Parameter).oclIsTypeOf(Parameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter)
    lemma cp_OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_NumericParameter:
      "cp P ⟹ cp(λX .(P(X::Parameter)::NumericParameter).oclIsTypeOf(Parameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma cp_OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_NumericParameter:
      "cp P ⟹ cp(λX .(P(X::Parameter)::NumericParameter).oclIsTypeOf(NumericParameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma cp_OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_StringParameter:
      "cp P ⟹ cp(λX .(P(X::StringParameter)::StringParameter).oclIsTypeOf(Parameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma cp_OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_Parameter:
      "cp P ⟹ cp(λX .(P(X::StringParameter)::Parameter).oclIsTypeOf(Parameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter)
    lemma cp_OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_StringParameter:
      "cp P ⟹ cp(λX .(P(X::Parameter)::StringParameter).oclIsTypeOf(Parameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma cp_OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_StringParameter:
      "cp P ⟹ cp(λX .(P(X::Parameter)::StringParameter).oclIsTypeOf(StringParameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma cp_OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_BooleanParameter:
      "cp P ⟹ cp(λX .(P(X::BooleanParameter)::BooleanParameter).oclIsTypeOf(Parameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)
    lemma cp_OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_Parameter:
      "cp P ⟹ cp(λX .(P(X::BooleanParameter)::Parameter).oclIsTypeOf(Parameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter)
    lemma cp_OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_BooleanParameter:
      "cp P ⟹ cp(λX .(P(X::Parameter)::BooleanParameter).oclIsTypeOf(Parameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)
    lemma cp_OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_BooleanParameter:
      "cp P ⟹ cp(λX .(P(X::Parameter)::BooleanParameter).oclIsTypeOf(BooleanParameter))"
      by(rule cpI1, simp_all add: OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)

    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem':
      fixes X :: "BrakeSystem"
      shows "X .oclIsTypeOf(BrakeSystem) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent':
      fixes X :: "BrakeComponent"
      shows "X .oclIsTypeOf(BrakeComponent) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor':
      fixes X :: "ABSSensor"
      shows "X .oclIsTypeOf(ABSSensor) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper':
      fixes X :: "BrakeCaliper"
      shows "X .oclIsTypeOf(BrakeCaliper) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose':
      fixes X :: "BrakeHose"
      shows "X .oclIsTypeOf(BrakeHose) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk':
      fixes X :: "BrakeDisk"
      shows "X .oclIsTypeOf(BrakeDisk) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad':
      fixes X :: "BrakePad"
      shows "X .oclIsTypeOf(BrakePad) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model':
      fixes X :: "CAD_Model"
      shows "X .oclIsTypeOf(CAD_Model) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace':
      fixes X :: "Namespace"
      shows "X .oclIsTypeOf(Namespace) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter':
      fixes X :: "Parameter"
      shows "X .oclIsTypeOf(Parameter) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter':
      fixes X :: "NumericParameter"
      shows "X .oclIsTypeOf(NumericParameter) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter':
      fixes X :: "StringParameter"
      shows "X .oclIsTypeOf(StringParameter) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter foundation18' bot_option_def
      by (rule ext, simp)
    lemma OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter':
      fixes X :: "BooleanParameter"
      shows "X .oclIsTypeOf(BooleanParameter) = (λ τ :: (𝔄 st).
                if τ ⊨ υ X
                then case X τ of
                        ⊥ ⇒ invalid τ |
                        _ ⇒ true τ
                else invalid τ)"
      unfolding OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter foundation18' bot_option_def
      by (rule ext, simp)

    interpretation OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem:
        profile_mono_schemeV
        "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m::BrakeSystem ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "BrakeSystem" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent:
        profile_mono_schemeV
        "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t::BrakeComponent ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "BrakeComponent" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor:
        profile_mono_schemeV
        "OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r::ABSSensor ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "ABSSensor" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper:
        profile_mono_schemeV
        "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r::BrakeCaliper ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "BrakeCaliper" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose:
        profile_mono_schemeV
        "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e::BrakeHose ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "BrakeHose" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk:
        profile_mono_schemeV
        "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k::BrakeDisk ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "BrakeDisk" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad:
        profile_mono_schemeV
        "OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d::BrakePad ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "BrakePad" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model:
        profile_mono_schemeV
        "OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l::CAD_Model ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "CAD_Model" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace:
        profile_mono_schemeV
        "OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e::Namespace ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "Namespace" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter:
        profile_mono_schemeV
        "OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r::Parameter ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "Parameter" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter:
        profile_mono_schemeV
        "OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r::NumericParameter ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter'
                    OclValid_def true_def, simp add: atomize_eq, rule ext)
      fix
        x :: "NumericParameter" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter:
        profile_mono_schemeV
        "OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r::StringParameter ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "StringParameter" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed
    interpretation OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter:
        profile_mono_schemeV
        "OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r::BooleanParameter ⇒ Boolean"
        "λ _::(⟨⟨𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥⟩⇩⊥). ⌊⌊True⌋⌋"
    proof (unfold_locales,
            unfold OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter' OclValid_def true_def,
            simp add: atomize_eq, rule ext)
      fix
        x :: "BooleanParameter" and
        τ :: "𝔄 st"
      show "(if (υ x) τ = ⌊⌊True⌋⌋
              then case x τ of ⊥ ⇒ invalid τ | ⌊a⌋ ⇒ ⌊⌊True⌋⌋
              else invalid τ) =
                  (if (υ x) τ = ⌊⌊True⌋⌋ then ⌊⌊True⌋⌋ else invalid τ)"
        by (auto split: option.split,
            metis OclValid_def bot_option_def foundation18' true_def)
    qed

    subsubsection ‹Execution with Invalid or Null as Argument›

    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem_strict2[simp]:
      "(null::BrakeSystem) .oclIsTypeOf(BrakeSystem) = true"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_strict2[simp]:
      "(null::BrakeComponent) .oclIsTypeOf(BrakeComponent) = true"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor_strict2[simp]:
      "(null::ABSSensor) .oclIsTypeOf(ABSSensor) = true"
      unfolding OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper_strict2[simp]:
      "(null::BrakeCaliper) .oclIsTypeOf(BrakeCaliper) = true"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose_strict2[simp]:
      "(null::BrakeHose) .oclIsTypeOf(BrakeHose) = true"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk_strict2[simp]:
      "(null::BrakeDisk) .oclIsTypeOf(BrakeDisk) = true"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad_strict2[simp]:
      "(null::BrakePad) .oclIsTypeOf(BrakePad) = true"
      unfolding OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model_strict2[simp]:
      "(null::CAD_Model) .oclIsTypeOf(CAD_Model) = true"
      unfolding OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace_strict2[simp]:
      "(null::Namespace) .oclIsTypeOf(Namespace) = true"
      unfolding OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_strict2[simp]:
      "(null::Parameter) .oclIsTypeOf(Parameter) = true"
      unfolding OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_strict2[simp]:
      "(null::NumericParameter) .oclIsTypeOf(NumericParameter) = true"
      unfolding OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_strict2[simp]:
      "(null::StringParameter) .oclIsTypeOf(StringParameter) = true"
      unfolding OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter null_fun_def null_option_def
      by simp
    lemma OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_strict2[simp]:
      "(null::BooleanParameter) .oclIsTypeOf(BooleanParameter) = true"
      unfolding OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter null_fun_def null_option_def
      by simp

    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor_strict1[simp]:
      "(invalid::ABSSensor).oclIsTypeOf(BrakeComponent) = invalid"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor_strict2[simp]:
      "(null::ABSSensor).oclIsTypeOf(BrakeComponent) = true"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper_strict1[simp]:
      "(invalid::BrakeCaliper).oclIsTypeOf(BrakeComponent) = invalid"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper_strict2[simp]:
      "(null::BrakeCaliper).oclIsTypeOf(BrakeComponent) = true"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose_strict1[simp]:
      "(invalid::BrakeHose).oclIsTypeOf(BrakeComponent) = invalid"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose_strict2[simp]:
      "(null::BrakeHose).oclIsTypeOf(BrakeComponent) = true"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk_strict1[simp]:
      "(invalid::BrakeDisk).oclIsTypeOf(BrakeComponent) = invalid"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk_strict2[simp]:
      "(null::BrakeDisk).oclIsTypeOf(BrakeComponent) = true"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad_strict1[simp]:
      "(invalid::BrakePad).oclIsTypeOf(BrakeComponent) = invalid"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad)
    lemma OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad_strict2[simp]:
      "(null::BrakePad).oclIsTypeOf(BrakeComponent) = true"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad)
    lemma OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_strict1[simp]:
      "(invalid::NumericParameter).oclIsTypeOf(Parameter) = invalid"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_strict2[simp]:
      "(null::NumericParameter).oclIsTypeOf(Parameter) = true"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter)
    lemma OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_strict1[simp]:
      "(invalid::StringParameter).oclIsTypeOf(Parameter) = invalid"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_strict2[simp]:
      "(null::StringParameter).oclIsTypeOf(Parameter) = true"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter)
    lemma OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_strict1[simp]:
      "(invalid::BooleanParameter).oclIsTypeOf(Parameter) = invalid"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)
    lemma OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_strict2[simp]:
      "(null::BooleanParameter).oclIsTypeOf(Parameter) = true"
      by(rule ext,
          simp add: null_fun_def null_option_def bot_option_def invalid_def
                    OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter)

    subsection ‹OCL Usage of OclIsKindOf›

    subsubsection ‹General Heap Accessors›

    definition pre⇩s⇩t⇩a⇩t⇩e :: "'𝔄 × '𝔅 ⇒ '𝔄" where
      "pre⇩s⇩t⇩a⇩t⇩e ≡ fst"

    definition post⇩s⇩t⇩a⇩t⇩e :: "'𝔄 × '𝔅 ⇒ '𝔅" where
      "post⇩s⇩t⇩a⇩t⇩e ≡ snd"

    definition reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e :: "('τ ⇒ (𝔄, ⟨⟨'τ⟩⇩⊥⟩⇩⊥) val) ⇒ 'τ ⇒
                                    (𝔄, ⟨⟨'τ⟩⇩⊥⟩⇩⊥) val" where
      "reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e ≡ (λ (convert :: 'τ ⇒ (𝔄, ⟨⟨'τ⟩⇩⊥⟩⇩⊥) val) (τ::'τ). convert τ)"

    definition list⇩f⇩l⇩a⇩t⇩t⇩e⇩n :: "oid list list ⇒ oid list" where
      "list⇩f⇩l⇩a⇩t⇩t⇩e⇩n ≡ (λ ls⇩1 :: oid list list.
          foldl (λ oids⇩1 :: _ list.
            (λ ls⇩2 :: _ list. foldl (λ oids⇩2 :: _ list. (λ l :: _. Cons l oids⇩2)) oids⇩1 (rev ls⇩2)))
              Nil (rev ls⇩1))"

    definition switch⇩2_1 :: "'α list ⇒ 'α × 'α" where
      "switch⇩2_1 = (λ [x, y]    ⇒ (x, y))"
    definition switch⇩2_2 :: "'α list ⇒ 'α × 'α" where
      "switch⇩2_2 = (λ [x, y]    ⇒ (y, x))"
    definition switch⇩3_1 :: "'α list ⇒ 'α × 'α" where
      "switch⇩3_1 = (λ [x, y, z] ⇒ (x, y))"
    definition switch⇩3_2 :: "'α list ⇒ 'α × 'α" where
      "switch⇩3_2 = (λ [x, y, z] ⇒ (x, z))"
    definition switch⇩3_3 :: "'α list ⇒ 'α × 'α" where
      "switch⇩3_3 = (λ [x, y, z] ⇒ (y, x))"
    definition switch⇩3_4 :: "'α list ⇒ 'α × 'α" where
      "switch⇩3_4 = (λ [x, y, z] ⇒ (y, z))"
    definition switch⇩3_5 :: "'α list ⇒ 'α × 'α" where
      "switch⇩3_5 = (λ [x, y ,z] ⇒ (z, x))"
    definition switch⇩3_6 :: "'α list ⇒ 'α × 'α" where
      "switch⇩3_6 = (λ [x, y, z] ⇒ (z, y))"

    subsubsection ‹OclIsKindOf Definitions›

    consts OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(BrakeSystem')")
    consts OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(BrakeComponent')")
    consts OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(ABSSensor')")
    consts OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(BrakeCaliper')")
    consts OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(BrakeHose')")
    consts OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(BrakeDisk')")
    consts OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(BrakePad')")
    consts OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(CAD'_Model')")
    consts OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(Namespace')")
    consts OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(Parameter')")
    consts OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(NumericParameter')")
    consts OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(StringParameter')")
    consts OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "'α ⇒ Boolean" ("(_).oclIsKindOf'(BooleanParameter')")

    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ::
      BrakeSystem ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem[code_unfold]:
          "(X::BrakeSystem) .oclIsKindOf(BrakeSystem) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakeComponent ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent[code_unfold]:
          "(X::BrakeComponent) .oclIsKindOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      ABSSensor ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_ABSSensor[code_unfold]:
          "(X::ABSSensor) .oclIsKindOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakeCaliper ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeCaliper[code_unfold]:
          "(X::BrakeCaliper) .oclIsKindOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakeHose ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeHose[code_unfold]:
          "(X::BrakeHose) .oclIsKindOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakeDisk ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeDisk[code_unfold]:
          "(X::BrakeDisk) .oclIsKindOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ::
      BrakePad ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakePad[code_unfold]:
          "(X::BrakePad) .oclIsKindOf(BrakeComponent) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ "OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ::
      ABSSensor ⇒ Boolean"
    begin
      definition OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor[code_unfold]:
          "(X::ABSSensor) .oclIsKindOf(ABSSensor) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ "OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ::
      BrakeComponent ⇒ Boolean"
    begin
      definition OclIsKindOff⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_BrakeComponent[code_unfold]:
          "(X::BrakeComponent) .oclIsKindOf(ABSSensor) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  ⌊⊥⌋ ⇒ true τ |
                  ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid ⊥ ⊥ ⊥ ⊥⌋⌋ ⇒ false τ |
                  ⌊⌊mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid ⌊_⌋ _ _ _⌋⌋ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ::
      BrakeCaliper ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper[code_unfold]:
          "(X::BrakeCaliper) .oclIsKindOf(BrakeCaliper) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ::
      BrakeHose ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose[code_unfold]:
          "(X::BrakeHose) .oclIsKindOf(BrakeHose) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ::
      BrakeDisk ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk[code_unfold]:
          "(X::BrakeDisk) .oclIsKindOf(BrakeDisk) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ "OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ::
      BrakePad ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad[code_unfold]:
          "(X::BrakePad) .oclIsKindOf(BrakePad) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ≡ "OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ::
      CAD_Model ⇒ Boolean"
    begin
      definition OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model[code_unfold]:
          "(X::CAD_Model) .oclIsKindOf(CAD_Model) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ≡ "OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ::
      Namespace ⇒ Boolean"
    begin
      definition OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace[code_unfold]:
          "(X::Namespace) .oclIsKindOf(Namespace) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      Parameter ⇒ Boolean"
    begin
      definition OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter[code_unfold]:
          "(X::Parameter) .oclIsKindOf(Parameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      NumericParameter ⇒ Boolean"
    begin
      definition OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter[code_unfold]:
          "(X::NumericParameter) .oclIsKindOf(Parameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      StringParameter ⇒ Boolean"
    begin
      definition OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter[code_unfold]:
          "(X::StringParameter) .oclIsKindOf(Parameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      BooleanParameter ⇒ Boolean"
    begin
      definition OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter[code_unfold]:
          "(X::BooleanParameter) .oclIsKindOf(Parameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      NumericParameter ⇒ Boolean"
    begin
      definition OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter[code_unfold]:
          "(X::NumericParameter) .oclIsKindOf(NumericParameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      StringParameter ⇒ Boolean"
    begin
      definition OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter[code_unfold]:
          "(X::StringParameter) .oclIsKindOf(StringParameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end
    overloading OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ "OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ::
      BooleanParameter ⇒ Boolean"
    begin
      definition OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter[code_unfold]:
          "(X::BooleanParameter) .oclIsKindOf(BooleanParameter) ≡ (λ τ :: (𝔄 st).
                case X τ of
                  ⊥ ⇒ invalid τ |
                  _ ⇒ true τ)"
    end

    lemma cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem_BrakeSystem:
      fixes P :: "BrakeSystem ⇒ BrakeSystem"
      shows "cp P ⟹ cp(λ X::BrakeSystem. ((P X) .oclIsKindOf(BrakeSystem)))"
      unfolding OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakeComponent:
      fixes P :: "BrakeComponent ⇒ BrakeComponent"
      shows "cp P ⟹ cp(λ X::BrakeComponent. ((P X) .oclIsKindOf(BrakeComponent)))"
      unfolding OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor_ABSSensor:
      fixes P :: "ABSSensor ⇒ ABSSensor"
      shows "cp P ⟹ cp(λ X::ABSSensor. ((P X) .oclIsKindOf(ABSSensor)))"
      unfolding OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper_BrakeCaliper:
      fixes P :: "BrakeCaliper ⇒ BrakeCaliper"
      shows "cp P ⟹ cp(λ X::BrakeCaliper. ((P X) .oclIsKindOf(BrakeCaliper)))"
      unfolding OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose_BrakeHose:
      fixes P :: "BrakeHose ⇒ BrakeHose"
      shows "cp P ⟹ cp(λ X::BrakeHose. ((P X) .oclIsKindOf(BrakeHose)))"
      unfolding OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk_BrakeDisk:
      fixes P :: "BrakeDisk ⇒ BrakeDisk"
      shows "cp P ⟹ cp(λ X::BrakeDisk. ((P X) .oclIsKindOf(BrakeDisk)))"
      unfolding OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad_BrakePad:
      fixes P :: "BrakePad ⇒ BrakePad"
      shows "cp P ⟹ cp(λ X::BrakePad. ((P X) .oclIsKindOf(BrakePad)))"
      unfolding OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model_CAD_Model:
      fixes P :: "CAD_Model ⇒ CAD_Model"
      shows "cp P ⟹ cp(λ X::CAD_Model. ((P X) .oclIsKindOf(CAD_Model)))"
      unfolding OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace_Namespace:
      fixes P :: "Namespace ⇒ Namespace"
      shows "cp P ⟹ cp(λ X::Namespace. ((P X) .oclIsKindOf(Namespace)))"
      unfolding OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_Parameter:
      fixes P :: "Parameter ⇒ Parameter"
      shows "cp P ⟹ cp(λ X::Parameter. ((P X) .oclIsKindOf(Parameter)))"
      unfolding OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_NumericParameter:
      fixes P :: "NumericParameter ⇒ NumericParameter"
      shows "cp P ⟹ cp(λ X::NumericParameter. ((P X) .oclIsKindOf(NumericParameter)))"
      unfolding OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_StringParameter:
      fixes P :: "StringParameter ⇒ StringParameter"
      shows "cp P ⟹ cp(λ X::StringParameter. ((P X) .oclIsKindOf(StringParameter)))"
      unfolding OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter
      by (rule cpI1, safe)
    lemma cp_OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_BooleanParameter:
      fixes P :: "BooleanParameter ⇒ BooleanParameter"
      shows "cp P ⟹ cp(λ X::BooleanParameter. ((P X) .oclIsKindOf(BooleanParameter)))"
      unfolding OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter
      by (rule cpI1, safe)

    lemmas [simp] =
      cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem_BrakeSystem
      cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_BrakeComponent
      cp_OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor_ABSSensor
      cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper_BrakeCaliper
      cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose_BrakeHose
      cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk_BrakeDisk
      cp_OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad_BrakePad
      cp_OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model_CAD_Model
      cp_OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace_Namespace
      cp_OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_Parameter
      cp_OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_NumericParameter
      cp_OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_StringParameter
      cp_OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_BooleanParameter

    subsubsection ‹Execution with Invalid or Null as Argument›

    lemma OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem_strict1[simp]:
      "(invalid::BrakeSystem) .oclIsKindOf(BrakeSystem) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem
      by simp
    lemma OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent_strict1[simp]:
      "(invalid::BrakeComponent) .oclIsKindOf(BrakeComponent) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent
      by simp
    lemma OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor_strict1[simp]:
      "(invalid::ABSSensor) .oclIsKindOf(ABSSensor) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor
      by simp
    lemma OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper_strict1[simp]:
      "(invalid::BrakeCaliper) .oclIsKindOf(BrakeCaliper) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper
      by simp
    lemma OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose_strict1[simp]:
      "(invalid::BrakeHose) .oclIsKindOf(BrakeHose) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose
      by simp
    lemma OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk_strict1[simp]:
      "(invalid::BrakeDisk) .oclIsKindOf(BrakeDisk) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk
      by simp
    lemma OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad_strict1[simp]:
      "(invalid::BrakePad) .oclIsKindOf(BrakePad) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad
      by simp
    lemma OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model_strict1[simp]:
      "(invalid::CAD_Model) .oclIsKindOf(CAD_Model) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model
      by simp
    lemma OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace_strict1[simp]:
      "(invalid::Namespace) .oclIsKindOf(Namespace) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace
      by simp
    lemma OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter_strict1[simp]:
      "(invalid::Parameter) .oclIsKindOf(Parameter) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter
      by simp
    lemma OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter_strict1[simp]:
      "(invalid::NumericParameter) .oclIsKindOf(NumericParameter) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter
      by simp
    lemma OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter_strict1[simp]:
      "(invalid::StringParameter) .oclIsKindOf(StringParameter) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter
      by simp
    lemma OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter_strict1[simp]:
      "(invalid::BooleanParameter) .oclIsKindOf(BooleanParameter) = invalid"
      unfolding invalid_def bot_option_def OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter
      by simp

    subsection ‹OCL Usage of OclAllInstances›

    definition BrakeSystem :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m⟩⇩⊥" where "BrakeSystem ≡ OclAsType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_𝔄"
    definition BrakeComponent :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t⟩⇩⊥" where
      "BrakeComponent ≡ OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_𝔄"
    definition ABSSensor :: "𝔄 ⇒ ⟨𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r⟩⇩⊥" where "ABSSensor ≡ OclAsType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_𝔄"
    definition BrakeCaliper :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r⟩⇩⊥" where "BrakeCaliper ≡ OclAsType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_𝔄"
    definition BrakeHose :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e⟩⇩⊥" where "BrakeHose ≡ OclAsType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_𝔄"
    definition BrakeDisk :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k⟩⇩⊥" where "BrakeDisk ≡ OclAsType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_𝔄"
    definition BrakePad :: "𝔄 ⇒ ⟨𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d⟩⇩⊥" where "BrakePad ≡ OclAsType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_𝔄"
    definition CAD_Model :: "𝔄 ⇒ ⟨𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l⟩⇩⊥" where "CAD_Model ≡ OclAsType⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_𝔄"
    definition Namespace :: "𝔄 ⇒ ⟨𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e⟩⇩⊥" where "Namespace ≡ OclAsType⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_𝔄"
    definition Parameter :: "𝔄 ⇒ ⟨𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥" where "Parameter ≡ OclAsType⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄"
    definition NumericParameter :: "𝔄 ⇒ ⟨𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥" where
      "NumericParameter ≡ OclAsType⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄"
    definition StringParameter :: "𝔄 ⇒ ⟨𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥" where
      "StringParameter ≡ OclAsType⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄"
    definition BooleanParameter :: "𝔄 ⇒ ⟨𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⟩⇩⊥" where
      "BooleanParameter ≡ OclAsType⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_𝔄"

    lemmas [simp] =
      BrakeSystem_def BrakeComponent_def ABSSensor_def BrakeCaliper_def
      BrakeHose_def BrakeDisk_def BrakePad_def CAD_Model_def
      Namespace_def Parameter_def NumericParameter_def
      StringParameter_def BooleanParameter_def

    subsubsection ‹Auxiliary Lemmas›

    lemma OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post BrakeSystem =
              (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeSystem ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. BrakeSystem ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post BrakeComponent =
              (λ τ :: 𝔄 st.
                Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeComponent ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. BrakeComponent ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post ABSSensor =
              (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` ABSSensor ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. ABSSensor ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post BrakeCaliper =
              (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeCaliper ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. BrakeCaliper ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post BrakeHose =
              (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeHose ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. BrakeHose ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post BrakeDisk =
              (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeDisk ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. BrakeDisk ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post BrakePad =
              (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakePad ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. BrakePad ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post CAD_Model =
              (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` CAD_Model ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. CAD_Model ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post Namespace =
              (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` Namespace ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. Namespace ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post Parameter =
              (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` Parameter ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. Parameter ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post NumericParameter =
              (λ τ :: 𝔄 st.
                Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` NumericParameter ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. NumericParameter ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post StringParameter =
              (λ τ :: 𝔄 st.
                Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` StringParameter ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. StringParameter ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed
    lemma OclAllInstances_generic⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      shows "OclAllInstances_generic pre_post BooleanParameter =
              (λ τ :: 𝔄 st.
                Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BooleanParameter ` ran (heap (pre_post τ))⌋⌋)"
    proof -
      let ?S1 = "λ τ :: 𝔄 st. BooleanParameter ` ran (heap (pre_post τ))"
      let ?S2 = "λ τ :: 𝔄 st. ?S1 τ - {None}"
      have B: "⋀ τ :: 𝔄 st. ?S2 τ ⊆ ?S1 τ"
        by safe
      have "⋀ τ :: 𝔄 st. ?S1 τ ⊆ ?S2 τ"
        by force
      thus ?thesis
        by(insert equalityI [OF B], simp)
    qed

    lemma OclAllInstances_at_post⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_exec:
      "BrakeSystem .allInstances() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeSystem ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_exec)
    lemma OclAllInstances_at_post⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_exec:
      "BrakeComponent .allInstances() =
            (λ τ :: 𝔄 st.
              Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeComponent ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_exec)
    lemma OclAllInstances_at_post⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_exec:
      "ABSSensor .allInstances() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` ABSSensor ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_exec)
    lemma OclAllInstances_at_post⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_exec:
      "BrakeCaliper .allInstances() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeCaliper ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_exec)
    lemma OclAllInstances_at_post⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_exec:
      "BrakeHose .allInstances() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeHose ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_exec)
    lemma OclAllInstances_at_post⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_exec:
      "BrakeDisk .allInstances() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeDisk ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_exec)
    lemma OclAllInstances_at_post⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_exec:
      "BrakePad .allInstances() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakePad ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_exec)
    lemma OclAllInstances_at_post⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_exec:
      "CAD_Model .allInstances() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` CAD_Model ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_exec)
    lemma OclAllInstances_at_post⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_exec:
      "Namespace .allInstances() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` Namespace ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_exec)
    lemma OclAllInstances_at_post⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      "Parameter .allInstances() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` Parameter ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec)
    lemma OclAllInstances_at_post⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      "NumericParameter .allInstances() =
            (λ τ :: 𝔄 st.
              Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` NumericParameter ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec)
    lemma OclAllInstances_at_post⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      "StringParameter .allInstances() =
            (λ τ :: 𝔄 st.
              Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` StringParameter ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec)
    lemma OclAllInstances_at_post⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      "BooleanParameter .allInstances() =
            (λ τ :: 𝔄 st.
              Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BooleanParameter ` ran (heap (post⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_post_def post⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec)

    lemma OclAllInstances_at_pre⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_exec:
      "BrakeSystem .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeSystem ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_exec)
    lemma OclAllInstances_at_pre⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_exec:
      "BrakeComponent .allInstances@pre() =
            (λ τ :: 𝔄 st.
              Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeComponent ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_exec)
    lemma OclAllInstances_at_pre⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_exec:
      "ABSSensor .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` ABSSensor ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_exec)
    lemma OclAllInstances_at_pre⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_exec:
      "BrakeCaliper .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeCaliper ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_exec)
    lemma OclAllInstances_at_pre⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_exec:
      "BrakeHose .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeHose ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_exec)
    lemma OclAllInstances_at_pre⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_exec:
      "BrakeDisk .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakeDisk ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_exec)
    lemma OclAllInstances_at_pre⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_exec:
      "BrakePad .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BrakePad ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_exec)
    lemma OclAllInstances_at_pre⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_exec:
      "CAD_Model .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` CAD_Model ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_exec)
    lemma OclAllInstances_at_pre⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_exec:
      "Namespace .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` Namespace ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_exec)
    lemma OclAllInstances_at_pre⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      "Parameter .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` Parameter ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec)
    lemma OclAllInstances_at_pre⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      "NumericParameter .allInstances@pre() =
            (λ τ :: 𝔄 st.
              Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` NumericParameter ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec)
    lemma OclAllInstances_at_pre⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      "StringParameter .allInstances@pre() =
            (λ τ :: 𝔄 st. Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` StringParameter ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec)
    lemma OclAllInstances_at_pre⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec:
      "BooleanParameter .allInstances@pre() =
            (λ τ :: 𝔄 st.
              Abs_Set⇩b⇩a⇩s⇩e ⌊⌊Some ` BooleanParameter ` ran (heap (pre⇩s⇩t⇩a⇩t⇩e τ))⌋⌋)"
      unfolding OclAllInstances_at_pre_def pre⇩s⇩t⇩a⇩t⇩e_def
      by(rule OclAllInstances_generic⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_exec)

    subsubsection ‹OclIsTypeOf Lemmas›

    lemma BrakeSystem_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post BrakeSystem)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeSystem))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma BrakeComponent_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post BrakeComponent)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeComponent))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma ABSSensor_allInstances_generic_oclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post ABSSensor)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(ABSSensor))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma BrakeCaliper_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post BrakeCaliper)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeCaliper))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma BrakeHose_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post BrakeHose)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeHose))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma BrakeDisk_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post BrakeDisk)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeDisk))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma BrakePad_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post BrakePad)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakePad))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma CAD_Model_allInstances_generic_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post CAD_Model)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(CAD_Model))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma Namespace_allInstances_generic_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post Namespace)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Namespace))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma Parameter_allInstances_generic_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post Parameter)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Parameter))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma NumericParameter_allInstances_generic_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post NumericParameter)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(NumericParameter))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma StringParameter_allInstances_generic_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post StringParameter)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(StringParameter))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all
    lemma BooleanParameter_allInstances_generic_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      fixes pre_post :: "(𝔄, 𝔄 state) val"
      assumes [simp]: "⋀ x :: 𝔄 state. pre_post (x, x) = x"
      shows "∃ τ :: 𝔄 st.
                (τ ⊨ ((OclAllInstances_generic pre_post BooleanParameter)
                          ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BooleanParameter))))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def
      apply(rule_tac x = τ⇩0 in exI)
      unfolding τ⇩0_def OclValid_def
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by simp_all

    lemma BrakeSystem_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m1:
      "∃ τ :: 𝔄 st. (τ ⊨ (BrakeSystem .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeSystem))))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeSystem_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m1, simp)
    lemma BrakeComponent_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (BrakeComponent .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeComponent))))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeComponent_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t1, simp)
    lemma ABSSensor_allInstances_at_post_oclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r1:
      "∃ τ :: 𝔄 st. (τ ⊨ (ABSSensor .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(ABSSensor))))"
      unfolding OclAllInstances_at_post_def
      by(rule ABSSensor_allInstances_generic_oclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r1, simp)
    lemma BrakeCaliper_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r1:
      "∃ τ :: 𝔄 st. (τ ⊨ (BrakeCaliper .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeCaliper))))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeCaliper_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r1, simp)
    lemma BrakeHose_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e1:
      "∃ τ :: 𝔄 st. (τ ⊨ (BrakeHose .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeHose))))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeHose_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e1, simp)
    lemma BrakeDisk_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k1:
      "∃ τ :: 𝔄 st. (τ ⊨ (BrakeDisk .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeDisk))))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeDisk_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k1, simp)
    lemma BrakePad_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d1:
      "∃ τ :: 𝔄 st. (τ ⊨ (BrakePad .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakePad))))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakePad_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d1, simp)
    lemma CAD_Model_allInstances_at_post_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l1:
      "∃ τ :: 𝔄 st. (τ ⊨ (CAD_Model .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(CAD_Model))))"
      unfolding OclAllInstances_at_post_def
      by(rule CAD_Model_allInstances_generic_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l1, simp)
    lemma Namespace_allInstances_at_post_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e1:
      "∃ τ :: 𝔄 st. (τ ⊨ (Namespace .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Namespace))))"
      unfolding OclAllInstances_at_post_def
      by(rule Namespace_allInstances_generic_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e1, simp)
    lemma Parameter_allInstances_at_post_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      "∃ τ :: 𝔄 st. (τ ⊨ (Parameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Parameter))))"
      unfolding OclAllInstances_at_post_def
      by(rule Parameter_allInstances_generic_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1, simp)
    lemma NumericParameter_allInstances_at_post_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (NumericParameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(NumericParameter))))"
      unfolding OclAllInstances_at_post_def
      by(rule NumericParameter_allInstances_generic_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1,
          simp)
    lemma StringParameter_allInstances_at_post_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (StringParameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(StringParameter))))"
      unfolding OclAllInstances_at_post_def
      by(rule StringParameter_allInstances_generic_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1, simp)
    lemma BooleanParameter_allInstances_at_post_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (BooleanParameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BooleanParameter))))"
      unfolding OclAllInstances_at_post_def
      by(rule BooleanParameter_allInstances_generic_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1, simp)

    lemma BrakeSystem_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (BrakeSystem .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeSystem))))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeSystem_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m1, simp)
    lemma BrakeComponent_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (BrakeComponent .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeComponent))))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeComponent_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t1, simp)
    lemma ABSSensor_allInstances_at_pre_oclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r1:
      "∃ τ :: 𝔄 st. (τ ⊨ (ABSSensor .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(ABSSensor))))"
      unfolding OclAllInstances_at_pre_def
      by(rule ABSSensor_allInstances_generic_oclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r1, simp)
    lemma BrakeCaliper_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (BrakeCaliper .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeCaliper))))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeCaliper_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r1, simp)
    lemma BrakeHose_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e1:
      "∃ τ :: 𝔄 st. (τ ⊨ (BrakeHose .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeHose))))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeHose_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e1, simp)
    lemma BrakeDisk_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k1:
      "∃ τ :: 𝔄 st. (τ ⊨ (BrakeDisk .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeDisk))))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeDisk_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k1, simp)
    lemma BrakePad_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d1:
      "∃ τ :: 𝔄 st. (τ ⊨ (BrakePad .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakePad))))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakePad_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d1, simp)
    lemma CAD_Model_allInstances_at_pre_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l1:
      "∃ τ :: 𝔄 st. (τ ⊨ (CAD_Model .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(CAD_Model))))"
      unfolding OclAllInstances_at_pre_def
      by(rule CAD_Model_allInstances_generic_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l1, simp)
    lemma Namespace_allInstances_at_pre_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e1:
      "∃ τ :: 𝔄 st. (τ ⊨ (Namespace .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Namespace))))"
      unfolding OclAllInstances_at_pre_def
      by(rule Namespace_allInstances_generic_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e1, simp)
    lemma Parameter_allInstances_at_pre_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      "∃ τ :: 𝔄 st. (τ ⊨ (Parameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Parameter))))"
      unfolding OclAllInstances_at_pre_def
      by(rule Parameter_allInstances_generic_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1, simp)
    lemma NumericParameter_allInstances_at_pre_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (NumericParameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(NumericParameter))))"
      unfolding OclAllInstances_at_pre_def
      by(rule NumericParameter_allInstances_generic_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1,
          simp)
    lemma StringParameter_allInstances_at_pre_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (StringParameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(StringParameter))))"
      unfolding OclAllInstances_at_pre_def
      by(rule StringParameter_allInstances_generic_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1, simp)
    lemma BooleanParameter_allInstances_at_pre_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1:
      "∃ τ :: 𝔄 st.
        (τ ⊨ (BooleanParameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BooleanParameter))))"
      unfolding OclAllInstances_at_pre_def
      by(rule BooleanParameter_allInstances_generic_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r1, simp)

    lemma BrakeSystem_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakeSystem)->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeSystem)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma BrakeComponent_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨ ((OclAllInstances_generic pre_post BrakeComponent)
                      ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeComponent)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma ABSSensor_allInstances_generic_oclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post ABSSensor)->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(ABSSensor)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma BrakeCaliper_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakeCaliper)->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeCaliper)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma BrakeHose_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakeHose)->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeHose)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma BrakeDisk_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakeDisk)->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeDisk)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma BrakePad_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakePad)->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakePad)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma CAD_Model_allInstances_generic_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post CAD_Model)->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(CAD_Model)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma Namespace_allInstances_generic_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post Namespace)->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Namespace)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma Parameter_allInstances_generic_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post Parameter)->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Parameter)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma NumericParameter_allInstances_generic_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨ ((OclAllInstances_generic pre_post NumericParameter)
                      ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(NumericParameter)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma StringParameter_allInstances_generic_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨ ((OclAllInstances_generic pre_post StringParameter)
                      ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(StringParameter)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)
    lemma BooleanParameter_allInstances_generic_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨ ((OclAllInstances_generic pre_post BooleanParameter)
                      ->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BooleanParameter)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclAllInstances_generic_def OclValid_def OclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      by (simp add: bot_option_def, simp)

    lemma BrakeSystem_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeSystem .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeSystem)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeSystem_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m)
    lemma BrakeComponent_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeComponent .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeComponent)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeComponent_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t)
    lemma ABSSensor_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (ABSSensor .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(ABSSensor)))"
      unfolding OclAllInstances_at_post_def
      by(rule ABSSensor_allInstances_generic_oclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)
    lemma BrakeCaliper_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeCaliper .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeCaliper)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeCaliper_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)
    lemma BrakeHose_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeHose .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeHose)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeHose_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)
    lemma BrakeDisk_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeDisk .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeDisk)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeDisk_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)
    lemma BrakePad_allInstances_at_post_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakePad .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakePad)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakePad_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)
    lemma CAD_Model_allInstances_at_post_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (CAD_Model .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(CAD_Model)))"
      unfolding OclAllInstances_at_post_def
      by(rule CAD_Model_allInstances_generic_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l)
    lemma Namespace_allInstances_at_post_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (Namespace .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Namespace)))"
      unfolding OclAllInstances_at_post_def
      by(rule Namespace_allInstances_generic_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e)
    lemma Parameter_allInstances_at_post_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (Parameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Parameter)))"
      unfolding OclAllInstances_at_post_def
      by(rule Parameter_allInstances_generic_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma NumericParameter_allInstances_at_post_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (NumericParameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(NumericParameter)))"
      unfolding OclAllInstances_at_post_def
      by(rule NumericParameter_allInstances_generic_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma StringParameter_allInstances_at_post_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (StringParameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(StringParameter)))"
      unfolding OclAllInstances_at_post_def
      by(rule StringParameter_allInstances_generic_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma BooleanParameter_allInstances_at_post_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BooleanParameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BooleanParameter)))"
      unfolding OclAllInstances_at_post_def
      by(rule BooleanParameter_allInstances_generic_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)

    lemma BrakeSystem_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeSystem .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeSystem)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeSystem_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m)
    lemma BrakeComponent_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeComponent .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeComponent)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeComponent_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t)
    lemma ABSSensor_allInstances_at_pre_oclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (ABSSensor .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(ABSSensor)))"
      unfolding OclAllInstances_at_pre_def
      by(rule ABSSensor_allInstances_generic_oclIsTypeOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)
    lemma BrakeCaliper_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeCaliper .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeCaliper)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeCaliper_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)
    lemma BrakeHose_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeHose .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeHose)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeHose_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)
    lemma BrakeDisk_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeDisk .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakeDisk)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeDisk_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)
    lemma BrakePad_allInstances_at_pre_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakePad .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BrakePad)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakePad_allInstances_generic_oclIsTypeOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)
    lemma CAD_Model_allInstances_at_pre_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (CAD_Model .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(CAD_Model)))"
      unfolding OclAllInstances_at_pre_def
      by(rule CAD_Model_allInstances_generic_oclIsTypeOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l)
    lemma Namespace_allInstances_at_pre_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (Namespace .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Namespace)))"
      unfolding OclAllInstances_at_pre_def
      by(rule Namespace_allInstances_generic_oclIsTypeOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e)
    lemma Parameter_allInstances_at_pre_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (Parameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(Parameter)))"
      unfolding OclAllInstances_at_pre_def
      by(rule Parameter_allInstances_generic_oclIsTypeOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma NumericParameter_allInstances_at_pre_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨
        (NumericParameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(NumericParameter)))"
      unfolding OclAllInstances_at_pre_def
      by(rule NumericParameter_allInstances_generic_oclIsTypeOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma StringParameter_allInstances_at_pre_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨
        (StringParameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(StringParameter)))"
      unfolding OclAllInstances_at_pre_def
      by(rule StringParameter_allInstances_generic_oclIsTypeOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma BooleanParameter_allInstances_at_pre_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨
        (BooleanParameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsTypeOf(BooleanParameter)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BooleanParameter_allInstances_generic_oclIsTypeOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)

    subsubsection ‹OclIsKindOf Lemmas›

    lemma BrakeSystem_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakeSystem)->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeSystem)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m_BrakeSystem
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma BrakeComponent_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨ ((OclAllInstances_generic pre_post BrakeComponent)
                      ->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeComponent)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t_BrakeComponent
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma ABSSensor_allInstances_generic_oclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post ABSSensor)->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(ABSSensor)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r_ABSSensor
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma BrakeCaliper_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakeCaliper)->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeCaliper)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r_BrakeCaliper
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma BrakeHose_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakeHose)->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeHose)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e_BrakeHose
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma BrakeDisk_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakeDisk)->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeDisk)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k_BrakeDisk
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma BrakePad_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post BrakePad)->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakePad)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d_BrakePad
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma CAD_Model_allInstances_generic_oclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post CAD_Model)->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(CAD_Model)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l_CAD_Model
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma Namespace_allInstances_generic_oclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post Namespace)->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(Namespace)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e_Namespace
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma Parameter_allInstances_generic_oclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨
        ((OclAllInstances_generic pre_post Parameter)->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(Parameter)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_Parameter
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma NumericParameter_allInstances_generic_oclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨ ((OclAllInstances_generic pre_post NumericParameter)
                      ->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(NumericParameter)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_NumericParameter
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma StringParameter_allInstances_generic_oclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨ ((OclAllInstances_generic pre_post StringParameter)
                      ->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(StringParameter)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_StringParameter
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all
    lemma BooleanParameter_allInstances_generic_oclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes
        τ :: "𝔄 st" and
        pre_post :: "(𝔄, 𝔄 state) val"
      shows "τ ⊨ ((OclAllInstances_generic pre_post BooleanParameter)
                      ->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BooleanParameter)))"
      unfolding OclAllInstances_generic_defined[simplified OclValid_def] UML_Set.OclForall_def
      unfolding OclValid_def OclAllInstances_generic_def OclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r_BooleanParameter
      apply(subst (1 2 3) Abs_Set⇩b⇩a⇩s⇩e_inverse)
      unfolding bot_option_def
      by simp_all

    lemma BrakeSystem_allInstances_at_post_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeSystem .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeSystem)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeSystem_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m)
    lemma BrakeComponent_allInstances_at_post_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeComponent .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeComponent)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeComponent_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t)
    lemma ABSSensor_allInstances_at_post_oclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (ABSSensor .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(ABSSensor)))"
      unfolding OclAllInstances_at_post_def
      by(rule ABSSensor_allInstances_generic_oclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)
    lemma BrakeCaliper_allInstances_at_post_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeCaliper .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeCaliper)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeCaliper_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)
    lemma BrakeHose_allInstances_at_post_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeHose .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeHose)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeHose_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)
    lemma BrakeDisk_allInstances_at_post_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeDisk .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeDisk)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakeDisk_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)
    lemma BrakePad_allInstances_at_post_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakePad .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakePad)))"
      unfolding OclAllInstances_at_post_def
      by(rule BrakePad_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)
    lemma CAD_Model_allInstances_at_post_oclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (CAD_Model .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(CAD_Model)))"
      unfolding OclAllInstances_at_post_def
      by(rule CAD_Model_allInstances_generic_oclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l)
    lemma Namespace_allInstances_at_post_oclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (Namespace .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(Namespace)))"
      unfolding OclAllInstances_at_post_def
      by(rule Namespace_allInstances_generic_oclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e)
    lemma Parameter_allInstances_at_post_oclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (Parameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(Parameter)))"
      unfolding OclAllInstances_at_post_def
      by(rule Parameter_allInstances_generic_oclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma NumericParameter_allInstances_at_post_oclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (NumericParameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(NumericParameter)))"
      unfolding OclAllInstances_at_post_def
      by(rule NumericParameter_allInstances_generic_oclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma StringParameter_allInstances_at_post_oclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (StringParameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(StringParameter)))"
      unfolding OclAllInstances_at_post_def
      by(rule StringParameter_allInstances_generic_oclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma BooleanParameter_allInstances_at_post_oclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BooleanParameter .allInstances()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BooleanParameter)))"
      unfolding OclAllInstances_at_post_def
      by(rule BooleanParameter_allInstances_generic_oclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)

    lemma BrakeSystem_allInstances_at_pre_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeSystem .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeSystem)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeSystem_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m)
    lemma BrakeComponent_allInstances_at_pre_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeComponent .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeComponent)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeComponent_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t)
    lemma ABSSensor_allInstances_at_pre_oclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (ABSSensor .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(ABSSensor)))"
      unfolding OclAllInstances_at_pre_def
      by(rule ABSSensor_allInstances_generic_oclIsKindOf⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)
    lemma BrakeCaliper_allInstances_at_pre_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeCaliper .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeCaliper)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeCaliper_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)
    lemma BrakeHose_allInstances_at_pre_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeHose .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeHose)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeHose_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)
    lemma BrakeDisk_allInstances_at_pre_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakeDisk .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakeDisk)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakeDisk_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)
    lemma BrakePad_allInstances_at_pre_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (BrakePad .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BrakePad)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BrakePad_allInstances_generic_oclIsKindOf⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)
    lemma CAD_Model_allInstances_at_pre_oclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (CAD_Model .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(CAD_Model)))"
      unfolding OclAllInstances_at_pre_def
      by(rule CAD_Model_allInstances_generic_oclIsKindOf⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l)
    lemma Namespace_allInstances_at_pre_oclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (Namespace .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(Namespace)))"
      unfolding OclAllInstances_at_pre_def
      by(rule Namespace_allInstances_generic_oclIsKindOf⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e)
    lemma Parameter_allInstances_at_pre_oclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨ (Parameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(Parameter)))"
      unfolding OclAllInstances_at_pre_def
      by(rule Parameter_allInstances_generic_oclIsKindOf⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma NumericParameter_allInstances_at_pre_oclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨
        (NumericParameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(NumericParameter)))"
      unfolding OclAllInstances_at_pre_def
      by(rule NumericParameter_allInstances_generic_oclIsKindOf⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma StringParameter_allInstances_at_pre_oclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨
        (StringParameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(StringParameter)))"
      unfolding OclAllInstances_at_pre_def
      by(rule StringParameter_allInstances_generic_oclIsKindOf⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)
    lemma BooleanParameter_allInstances_at_pre_oclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r:
      fixes τ :: "𝔄 st"
      shows "τ ⊨
        (BooleanParameter .allInstances@pre()->forAll⇩S⇩e⇩t(X | X .oclIsKindOf(BooleanParameter)))"
      unfolding OclAllInstances_at_pre_def
      by(rule BooleanParameter_allInstances_generic_oclIsKindOf⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)

    subsection ‹OCL Usage of Accessors›

    definition oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 :: oid where
      "oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 ≡ 20"
    definition oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 :: oid where
      "oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 ≡ 30"
    definition oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 :: oid where
      "oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 ≡ 40"
    definition oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 :: oid where
      "oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 ≡ 50"

    subsubsection ‹Auxiliary Definitions›

    definition eval_extract :: "(𝔄, ('α::object) option option) val ⇒
                                  (oid ⇒ (𝔄, 'β::null) val) ⇒
                                  (𝔄, 'β) val" where
      "eval_extract X f ≡ (λ τ :: 𝔄 st.
          case (X :: (𝔄, ⟨⟨'α⟩⇩⊥⟩⇩⊥) val) τ of
            ⊥      ⇒ invalid τ |  ― ‹exception propagation›
            ⌊⊥⌋    ⇒ invalid τ |  ― ‹dereferencing null pointer›
            ⌊⌊obj⌋⌋ ⇒ f (oid_of obj) τ)"

    definition deref_assocs :: "((𝔄, 𝔄 state) val) ⇒
                                    (oid list list ⇒ oid list × oid list) ⇒
                                    oid ⇒ (oid list ⇒ (𝔄, 'α::null) val) ⇒
                                    oid ⇒ (𝔄, 'α) val" where
      "deref_assocs pre⇩p⇩o⇩s⇩t to⇩f⇩r⇩o⇩m assoc⇩o⇩i⇩d f oid ≡ (λ τ :: 𝔄 st.
          case (assocs (pre⇩p⇩o⇩s⇩t τ)) assoc⇩o⇩i⇩d of
            ⌊S::oid list list list⌋ ⇒
              f (list⇩f⇩l⇩a⇩t⇩t⇩e⇩n (map (post⇩s⇩t⇩a⇩t⇩e ∘ to⇩f⇩r⇩o⇩m)
                (filter (λ p :: (oid list list).
                          List.member (pre⇩s⇩t⇩a⇩t⇩e (to⇩f⇩r⇩o⇩m p)) oid) S))) τ |
            _ ⇒ invalid τ)"

    definition deref_oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m :: "((𝔄, 𝔄 state) val) ⇒
                                        (𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ⇒ (𝔄, 'α::null) val) ⇒
                                        oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t :: "((𝔄, 𝔄 state) val) ⇒
                                          (𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ⇒ (𝔄, 'α::null) val) ⇒
                                          oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r :: "((𝔄, 𝔄 state) val) ⇒
                                      (𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ⇒ (𝔄, 'α::null) val) ⇒
                                      oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r :: "((𝔄, 𝔄 state) val) ⇒
                                        (𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ⇒ (𝔄, 'α::null) val) ⇒
                                        oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e :: "((𝔄, 𝔄 state) val) ⇒
                                      (𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ⇒ (𝔄, 'α::null) val) ⇒
                                      oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k :: "((𝔄, 𝔄 state) val) ⇒
                                      (𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ (𝔄, 'α::null) val) ⇒
                                      oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d :: "((𝔄, 𝔄 state) val) ⇒
                                      (𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ⇒ (𝔄, 'α::null) val) ⇒
                                      oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l :: "((𝔄, 𝔄 state) val) ⇒
                                      (𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ⇒ (𝔄, 'α::null) val) ⇒
                                      oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e :: "((𝔄, 𝔄 state) val) ⇒
                                      (𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ⇒ (𝔄, 'α::null) val) ⇒
                                      oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "((𝔄, 𝔄 state) val) ⇒
                                      (𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ (𝔄, 'α::null) val) ⇒
                                      oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "((𝔄, 𝔄 state) val) ⇒
                                            (𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ (𝔄, 'α::null) val) ⇒
                                            oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "((𝔄, 𝔄 state) val) ⇒
                                            (𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ (𝔄, 'α::null) val) ⇒
                                            oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"
    definition deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r :: "((𝔄, 𝔄 state) val) ⇒
                                            (𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ (𝔄, 'α::null) val) ⇒
                                            oid ⇒ (𝔄, 'α) val" where
      "deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r fst⇩s⇩n⇩d f oid ≡ (λ τ :: (𝔄 st).
          case (heap (fst⇩s⇩n⇩d τ)) oid of
            ⌊in⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r obj⌋ ⇒ f obj τ |
            _           ⇒ invalid τ)"

    subsubsection ‹Field Selectors›

    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ :: "(('α ⇒ 'β ⇒
                                                                ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                              string ⇒ 'a::null) ⇒
                                                            𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (_::oid) ⊥ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (_::oid) ⌊mb::string⌋ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒪ℰℳ_𝒩𝒰ℳℬℰℛ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                        int ⇒ 'a::null) ⇒
                                                      𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒪ℰℳ_𝒩𝒰ℳℬℰℛ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (_::oid) _ ⊥ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (_::oid) _ ⌊mb::int⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒
                                                              ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                            string ⇒ 'a::null) ⇒
                                                          𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (_::oid) _ _ ⊥ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (_::oid) _ _ ⌊mb::string⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                            string ⇒ 'a::null) ⇒
                                          𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℐ𝒟 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (_::oid) _ _ ⊥ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t (_::oid) _ _ ⌊mb::string⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"

    definition select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ :: "(('α ⇒ 'β ⇒
                                                            ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                          string ⇒ 'a::null) ⇒
                                                        𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ⇒ 'a" where
      "select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ f ≡ (λ X::𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r.
          case X of
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) ⊥ _ _ _ _ _ _ _)   ⇒ null |
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) ⌊mb::string⌋ _ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    int ⇒ 'a::null) ⇒
                                                  𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ⇒ 'a" where
      "select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ f ≡ (λ X::𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r.
          case X of
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ ⊥ _ _ _ _ _ _)   ⇒ null |
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ ⌊mb::int⌋ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                        string ⇒ 'a::null) ⇒
                                                      𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ⇒ 'a" where
      "select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r.
          case X of
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ ⊥ _ _ _ _ _)   ⇒ null |
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ ⌊mb::string⌋ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒ string ⇒ 'a::null) ⇒
                                      𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ⇒ 'a" where
      "select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℐ𝒟 f ≡ (λ X::𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r.
          case X of
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ ⊥ _ _ _ _)   ⇒ null |
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ ⌊mb::string⌋ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮ℰ𝒩𝒮𝒪ℛ𝒯𝒴𝒫ℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                  string ⇒ 'a::null) ⇒
                                                𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ⇒ 'a" where
      "select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮ℰ𝒩𝒮𝒪ℛ𝒯𝒴𝒫ℰ f ≡ (λ X::𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r.
          case X of
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ _ ⊥ _ _ _)   ⇒ null |
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ _ ⌊mb::string⌋ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒟ℰ𝒫𝒯ℋ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    int ⇒ 'a::null) ⇒
                                                  𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ⇒ 'a" where
      "select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒟ℰ𝒫𝒯ℋ f ≡ (λ X::𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r.
          case X of
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ _ _ ⊥ _ _)   ⇒ null |
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ _ _ ⌊mb::int⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒩𝒰ℳℬℰℛ𝒪ℱ𝒫ℐ𝒩𝒮 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                      int ⇒ 'a::null) ⇒
                                                    𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ⇒ 'a" where
      "select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒩𝒰ℳℬℰℛ𝒪ℱ𝒫ℐ𝒩𝒮 f ≡ (λ X::𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r.
          case X of
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ _ _ _ ⊥ _)   ⇒ null |
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ _ _ _ ⌊mb::int⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    int ⇒ 'a::null) ⇒
                                                  𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ⇒ 'a" where
      "select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r.
          case X of
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ _ _ _ _ ⊥)   ⇒ null |
            (mk⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r (_::oid) _ _ _ _ _ _ _ ⌊mb::int⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"

    definition select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                          string ⇒ 'a::null) ⇒
                                                        𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) ⊥ _ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) ⌊mb::string⌋ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒪ℰℳ_𝒩𝒰ℳℬℰℛ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    int ⇒ 'a::null) ⇒
                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒪ℰℳ_𝒩𝒰ℳℬℰℛ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ ⊥ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ ⌊mb::int⌋ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                        string ⇒ 'a::null) ⇒
                                                      𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ ⊥ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ ⌊mb::string⌋ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨  ⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                        string ⇒ 'a::null) ⇒
                                      𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℐ𝒟 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ _ ⊥ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ _ ⌊mb::string⌋ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ1 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    string ⇒ 'a::null) ⇒
                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ1 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ _ _ ⊥ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ _ _ ⌊mb::string⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ2 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    string ⇒ 'a::null) ⇒
                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ2 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ _ _ _ ⊥ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ _ _ _ ⌊mb::string⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    int ⇒ 'a::null) ⇒
                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ _ _ _ _ ⊥)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e (_::oid) _ _ _ _ _ _ ⌊mb::int⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"

    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                          string ⇒ 'a::null) ⇒
                                                        𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) ⊥ _ _ _ _ _ _ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) ⌊mb::string⌋ _ _ _ _ _ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒪ℰℳ_𝒩𝒰ℳℬℰℛ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    int ⇒ 'a::null) ⇒
                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒪ℰℳ_𝒩𝒰ℳℬℰℛ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ ⊥ _ _ _ _ _ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ ⌊mb::int⌋ _ _ _ _ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                        string ⇒ 'a::null) ⇒
                                                      𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ ⊥ _ _ _ _ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ ⌊mb::string⌋ _ _ _ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒ string ⇒ 'a::null) ⇒
                                      𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℐ𝒟 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ ⊥ _ _ _ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ ⌊mb::string⌋ _ _ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                        int ⇒ 'a::null) ⇒
                                                      𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ ⊥ _ _ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ ⌊mb::int⌋ _ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒞ℰ𝒩𝒯ℰℛℐ𝒩𝒢𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒
                                                                    ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                                  int ⇒ 'a::null) ⇒
                                                                𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒞ℰ𝒩𝒯ℰℛℐ𝒩𝒢𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ ⊥ _ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ ⌊mb::int⌋ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℛℐℳℋ𝒪ℒℰ𝒩𝒰ℳℬℰℛ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                          int ⇒ 'a::null) ⇒
                                                        𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℛℐℳℋ𝒪ℒℰ𝒩𝒰ℳℬℰℛ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ ⊥ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ ⌊mb::int⌋ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℋ𝒪ℒℰ𝒜ℛℛ𝒜𝒩𝒢ℰℳℰ𝒩𝒯𝒩𝒰ℳℬℰℛ :: "(('α ⇒ 'β ⇒
                                                                      ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                                    int ⇒ 'a::null) ⇒
                                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℋ𝒪ℒℰ𝒜ℛℛ𝒜𝒩𝒢ℰℳℰ𝒩𝒯𝒩𝒰ℳℬℰℛ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ ⊥ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ ⌊mb::int⌋ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬ𝒪ℒ𝒯ℋ𝒪ℒℰ𝒞ℐℛ𝒞ℒℰℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒
                                                                ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                              int ⇒ 'a::null) ⇒
                                                            𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬ𝒪ℒ𝒯ℋ𝒪ℒℰ𝒞ℐℛ𝒞ℒℰℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ _ ⊥ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ _ ⌊mb::int⌋ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒
                                                                      ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                                    int ⇒ 'a::null) ⇒
                                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ _ _ ⊥ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ _ _ ⌊mb::int⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℳℐ𝒩ℐℳ𝒰ℳ𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒
                                                                    ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                                  int ⇒ 'a::null) ⇒
                                                                𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℳℐ𝒩ℐℳ𝒰ℳ𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ _ _ _ ⊥ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ _ _ _ ⌊mb::int⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒱ℰ𝒩𝒯ℐℒ𝒜𝒯ℰ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                  bool ⇒ 'a::null) ⇒
                                                𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒱ℰ𝒩𝒯ℐℒ𝒜𝒯ℰ𝒟 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ _ _ _ _ ⊥)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k (_::oid) _ _ _ _ _ _ _ _ _ _ _ ⌊mb::bool⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"

    definition select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                        string ⇒ 'a::null) ⇒
                                                      𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) ⊥ _ _ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) ⌊mb::string⌋ _ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒪ℰℳ_𝒩𝒰ℳℬℰℛ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    int ⇒ 'a::null) ⇒
                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒪ℰℳ_𝒩𝒰ℳℬℰℛ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ ⊥ _ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ ⌊mb::int⌋ _ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                      string ⇒ 'a::null) ⇒
                                                    𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ ⊥ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ ⌊mb::string⌋ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒ string ⇒ 'a::null) ⇒
                                      𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℐ𝒟 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ ⊥ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ ⌊mb::string⌋ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℰ𝒜ℛ𝒲𝒜ℛ𝒩ℐ𝒩𝒢 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    bool ⇒ 'a::null) ⇒
                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℰ𝒜ℛ𝒲𝒜ℛ𝒩ℐ𝒩𝒢 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ _ ⊥ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ _ ⌊mb::bool⌋ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℋℰℐ𝒢ℋ𝒯ℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                  int ⇒ 'a::null) ⇒
                                                𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℋℰℐ𝒢ℋ𝒯ℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ _ _ ⊥ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ _ _ ⌊mb::int⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℐ𝒟𝒯ℋ𝒯ℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    int ⇒ 'a::null) ⇒
                                                  𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℐ𝒟𝒯ℋ𝒯ℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ _ _ _ ⊥ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ _ _ _ ⌊mb::int⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                      int ⇒ 'a::null) ⇒
                                                    𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ _ _ _ _ ⊥)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d (_::oid) _ _ _ _ _ _ _ ⌊mb::int⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"

    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ :: "(('α ⇒ 'β ⇒
                                                              ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                            string ⇒ 'a::null) ⇒
                                                          𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) ⊥ _ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) ⌊mb::string⌋ _ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                      int ⇒ 'a::null) ⇒
                                                    𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ ⊥ _ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ ⌊mb::int⌋ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒
                                                            ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                          string ⇒ 'a::null) ⇒
                                                        𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ _ ⊥ _ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ _ ⌊mb::string⌋ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒ string ⇒ 'a::null) ⇒
                                        𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℐ𝒟 f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ _ _ ⊥ _ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ _ _ ⌊mb::string⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    text ‹‹BrakeCaliper›'s containment association ‹ℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮› to ‹BrakePad››
    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    'b ⇒ ('𝔄,'a::null) val) ⇒
                                                  'b list ⇒ ('𝔄,'a) Set" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 f ≡ select_object⇩S⇩e⇩t (f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋))"

    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒫ℐ𝒮𝒯𝒪𝒩𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒
                                                                    ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                                  int ⇒ 'a::null) ⇒
                                                                𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒫ℐ𝒮𝒯𝒪𝒩𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ _ _ _ ⊥ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ _ _ _ ⌊mb::int⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ :: "(('α ⇒ 'β ⇒
                                                                        ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                                      int ⇒ 'a::null) ⇒
                                                                    𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ _ _ _ _ ⊥)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (_::oid) _ _ _ _ _ ⌊mb::int⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"

    definition select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒ string ⇒ 'a::null) ⇒
                                      𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 f ≡ (λ X::𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) ⊥ _ _)   ⇒ null |
            (mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) ⌊mb::string⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                            string ⇒ 'a::null) ⇒
                                          𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ f ≡ (λ X::𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ ⊥ _)   ⇒ null |
            (mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ ⌊mb::string⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    string ⇒ 'a::null) ⇒
                                                  𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ ⊥)   ⇒ null |
            (mk⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ ⌊mb::string⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"

    definition select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩eℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒ string ⇒ 'a::null) ⇒
                                      𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ⇒ 'a" where
      "select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩eℐ𝒟 f ≡ (λ X::𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e.
          case X of
            (mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e (_::oid) ⊥ _ _)   ⇒ null |
            (mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e (_::oid) ⌊mb::string⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒩𝒜ℳℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                            string ⇒ 'a::null) ⇒
                                          𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ⇒ 'a" where
      "select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒩𝒜ℳℰ f ≡ (λ X::𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e.
          case X of
            (mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e (_::oid) _ ⊥ _)   ⇒ null |
            (mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e (_::oid) _ ⌊mb::string⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    string ⇒ 'a::null) ⇒
                                                  𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ⇒ 'a" where
      "select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e.
          case X of
            (mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e (_::oid) _ _ ⊥)   ⇒ null |
            (mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e (_::oid) _ _ ⌊mb::string⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    text ‹‹Namespace›'s containment association ‹𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮› to ‹Parameter››
    definition select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    'b ⇒ ('𝔄,'a::null) val) ⇒
                                                  'b list ⇒ ('𝔄,'a) Set" where
      "select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 f ≡ select_object⇩S⇩e⇩t (f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋))"

    definition select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                              string ⇒ 'a::null) ⇒
                                            𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 f ≡ (λ X::𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) ⊥ _ _ _ _)   ⇒ null |
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) ⌊mb::string⌋ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                  string ⇒ 'a::null) ⇒
                                                𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ f ≡ (λ X::𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ ⊥ _ _ _)   ⇒ null |
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ ⌊mb::string⌋ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                        string ⇒ 'a::null) ⇒
                                                      𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ ⊥ _ _)   ⇒ null |
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ ⌊mb::string⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                  real ⇒ 'a::null) ⇒
                                                𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ f ≡ (λ X::𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ ⊥ _)   ⇒ null |
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ ⌊mb::real⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                string ⇒ 'a::null) ⇒
                                              𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 f ≡ (λ X::𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ _ ⊥)   ⇒ null |
            (mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ _ ⌊mb::string⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"

    definition select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                              string ⇒ 'a::null) ⇒
                                            𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 f ≡ (λ X::𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) ⊥ _ _ _ _)   ⇒ null |
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) ⌊mb::string⌋ _ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                  string ⇒ 'a::null) ⇒
                                                𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ f ≡ (λ X::𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ ⊥ _ _ _)   ⇒ null |
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ ⌊mb::string⌋ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                        string ⇒ 'a::null) ⇒
                                                      𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ ⊥ _ _)   ⇒ null |
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ ⌊mb::string⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                string ⇒ 'a::null) ⇒
                                              𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ f ≡ (λ X::𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ ⊥ _)   ⇒ null |
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ ⌊mb::string⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                string ⇒ 'a::null) ⇒
                                              𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 f ≡ (λ X::𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ _ ⊥)   ⇒ null |
            (mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ _ ⌊mb::string⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                              string ⇒ 'a::null) ⇒
                                            𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 f ≡ (λ X::𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) ⊥ _ _ _)   ⇒ null |
            (mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) ⌊mb::string⌋ _ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                  string ⇒ 'a::null) ⇒
                                                𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ f ≡ (λ X::𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ ⊥ _ _)   ⇒ null |
            (mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ ⌊mb::string⌋ _ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                          string ⇒ 'a::null) ⇒
                                                        𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 f ≡ (λ X::𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ ⊥ _)   ⇒ null |
            (mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ ⌊mb::string⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                  bool ⇒ 'a::null) ⇒
                                                𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ⇒ 'a" where
      "select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ f ≡ (λ X::𝒯⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r.
          case X of
            (mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ ⊥)   ⇒ null |
            (mk⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r (_::oid) _ _ _ ⌊mb::bool⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"

    definition select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩lℐ𝒟 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                        string ⇒ 'a::null) ⇒
                                      𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ⇒ 'a" where
      "select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩lℐ𝒟 f ≡ (λ X::𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l.
          case X of
            (mk⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l (_::oid) ⊥ _)   ⇒ null |
            (mk⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l (_::oid) ⌊mb::string⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                            string ⇒ 'a::null) ⇒
                                          𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ⇒ 'a" where
      "select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ f ≡ (λ X::𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l.
          case X of
            (mk⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l (_::oid) _ ⊥)   ⇒ null |
            (mk⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l (_::oid) _ ⌊mb::string⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    text ‹‹CAD_Model›'s containment association ‹𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮› to ‹Namespace››
    definition select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                    'b ⇒ ('𝔄,'a::null) val) ⇒
                                                  'b list ⇒ ('𝔄,'a) Set" where
      "select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 f ≡ select_object⇩S⇩e⇩t (f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋))"

    definition select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ :: "(('α ⇒ 'β ⇒
                                                              ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                            string ⇒ 'a::null) ⇒
                                                          𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m (_::oid) ⊥ _)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m (_::oid) ⌊mb::string⌋ _) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    definition select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℐ𝒩𝒮𝒯𝒜𝒩𝒞ℰ𝒩𝒜ℳℰ :: "(('α ⇒ 'β ⇒ ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                        string ⇒ 'a::null) ⇒
                                                      𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ⇒ 'a" where
      "select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℐ𝒩𝒮𝒯𝒜𝒩𝒞ℰ𝒩𝒜ℳℰ f ≡ (λ X::𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m.
          case X of
            (mk⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m (_::oid) _ ⊥)   ⇒ null |
            (mk⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m (_::oid) _ ⌊mb::string⌋) ⇒
              f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋) mb)"
    text ‹‹BrakeSystem›'s containment association ‹ℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮› to ‹BrakeComponent››
    definition select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 :: "(('α ⇒ 'β ⇒
                                                              ⟨⟨'α⟩⇩⊥⟩⇩⊥) ⇒
                                                            'b ⇒ ('𝔄,'a::null) val) ⇒
                                                          'b list ⇒ ('𝔄,'a) Set" where
      "select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 f ≡ select_object⇩S⇩e⇩t (f (λ (x::'α) (_::'β). ⌊⌊x⌋⌋))"

    subsubsection ‹Field Accessors›

    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ ::
      "BrakeComponent ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒪ℰℳ_𝒩𝒰ℳℬℰℛ ::
      "BrakeComponent ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 ::
      "BrakeComponent ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℐ𝒟 :: "BrakeComponent ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre ::
      "BrakeComponent ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t@pre)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t@pre = eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre ::
      "BrakeComponent ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t@pre)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre ::
      "BrakeComponent ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t@pre)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℐ𝒟_at_pre :: "BrakeComponent ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t@pre)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ ::
      "ABSSensor ⇒ String"
                  ("(1(_).specificationType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)" 50) where
      "(X).specificationType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ ::
      "ABSSensor ⇒ Integer"
                  ("(1(_).OEM'_number⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)" 50) where
      "(X).OEM_number⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 ::
      "ABSSensor ⇒ String"
                  ("(1(_).fittingPosition⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)" 50) where
      "(X).fittingPosition⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℐ𝒟 :: "ABSSensor ⇒ String"
                  ("(1(_).id⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)" 50) where
      "(X).id⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮ℰ𝒩𝒮𝒪ℛ𝒯𝒴𝒫ℰ ::
      "ABSSensor ⇒ String"
                  ("(1(_).sensorType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)" 50) where
      "(X).sensorType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮ℰ𝒩𝒮𝒪ℛ𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒟ℰ𝒫𝒯ℋ ::
      "ABSSensor ⇒ Integer"
                  ("(1(_).fittingDepth⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)" 50) where
      "(X).fittingDepth⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒟ℰ𝒫𝒯ℋ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒩𝒰ℳℬℰℛ𝒪ℱ𝒫ℐ𝒩𝒮 ::
      "ABSSensor ⇒ Integer"
                  ("(1(_).numberOfPins⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)" 50) where
      "(X).numberOfPins⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒩𝒰ℳℬℰℛ𝒪ℱ𝒫ℐ𝒩𝒮 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ ::
      "ABSSensor ⇒ Integer"
                  ("(1(_).lengthInMM⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r)" 50) where
      "(X).lengthInMM⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre ::
      "ABSSensor ⇒ String"
                  ("(1(_).specificationType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre)" 50) where
      "(X).specificationType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre ::
      "ABSSensor ⇒ Integer"
                  ("(1(_).OEM'_number⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre)" 50) where
      "(X).OEM_number⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre ::
      "ABSSensor ⇒ String"
                  ("(1(_).fittingPosition⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre)" 50) where
      "(X).fittingPosition⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℐ𝒟_at_pre :: "ABSSensor ⇒ String"
                  ("(1(_).id⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre)" 50) where
      "(X).id⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮ℰ𝒩𝒮𝒪ℛ𝒯𝒴𝒫ℰ_at_pre ::
      "ABSSensor ⇒ String"
                  ("(1(_).sensorType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre)" 50) where
      "(X).sensorType⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮ℰ𝒩𝒮𝒪ℛ𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒟ℰ𝒫𝒯ℋ_at_pre ::
      "ABSSensor ⇒ Integer"
                  ("(1(_).fittingDepth⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre)" 50) where
      "(X).fittingDepth⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒟ℰ𝒫𝒯ℋ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒩𝒰ℳℬℰℛ𝒪ℱ𝒫ℐ𝒩𝒮_at_pre ::
      "ABSSensor ⇒ Integer"
                  ("(1(_).numberOfPins⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre)" 50) where
      "(X).numberOfPins⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒩𝒰ℳℬℰℛ𝒪ℱ𝒫ℐ𝒩𝒮 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ_at_pre ::
      "ABSSensor ⇒ Integer"
                  ("(1(_).lengthInMM⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre)" 50) where
      "(X).lengthInMM⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r@pre ≡ eval_extract X
                            (deref_oid⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ ::
      "BrakeHose ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒪ℰℳ_𝒩𝒰ℳℬℰℛ ::
      "BrakeHose ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 ::
      "BrakeHose ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℐ𝒟 :: "BrakeHose ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ1 ::
      "BrakeHose ⇒ String"
                  ("(1(_).threadSize1⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)" 50) where
      "(X).threadSize1⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ1 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ2 ::
      "BrakeHose ⇒ String"
                  ("(1(_).threadSize2⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)" 50) where
      "(X).threadSize2⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ2 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ ::
      "BrakeHose ⇒ Integer"
                  ("(1(_).lengthInMM⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e)" 50) where
      "(X).lengthInMM⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre ::
      "BrakeHose ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre ::
      "BrakeHose ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre ::
      "BrakeHose ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℐ𝒟_at_pre :: "BrakeHose ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ1_at_pre ::
      "BrakeHose ⇒ String"
                  ("(1(_).threadSize1⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre)" 50) where
      "(X).threadSize1⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ1 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ2_at_pre ::
      "BrakeHose ⇒ String"
                  ("(1(_).threadSize2⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre)" 50) where
      "(X).threadSize2⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ2 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ_at_pre ::
      "BrakeHose ⇒ Integer"
                  ("(1(_).lengthInMM⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre)" 50) where
      "(X).lengthInMM⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ ::
      "BrakeDisk ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒪ℰℳ_𝒩𝒰ℳℬℰℛ ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 ::
      "BrakeDisk ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℐ𝒟 :: "BrakeDisk ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).diameterInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).diameterInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒞ℰ𝒩𝒯ℰℛℐ𝒩𝒢𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).centeringDiameterInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).centeringDiameterInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                    (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                      (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒞ℰ𝒩𝒯ℰℛℐ𝒩𝒢𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℛℐℳℋ𝒪ℒℰ𝒩𝒰ℳℬℰℛ ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).rimHoleNumber⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).rimHoleNumber⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℛℐℳℋ𝒪ℒℰ𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℋ𝒪ℒℰ𝒜ℛℛ𝒜𝒩𝒢ℰℳℰ𝒩𝒯𝒩𝒰ℳℬℰℛ ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).holeArrangementNumber⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).holeArrangementNumber⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                    (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                      (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℋ𝒪ℒℰ𝒜ℛℛ𝒜𝒩𝒢ℰℳℰ𝒩𝒯𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬ𝒪ℒ𝒯ℋ𝒪ℒℰ𝒞ℐℛ𝒞ℒℰℐ𝒩ℳℳ ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).boltHoleCircleInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).boltHoleCircleInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬ𝒪ℒ𝒯ℋ𝒪ℒℰ𝒞ℐℛ𝒞ℒℰℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).brakeDiskThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).brakeDiskThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                    (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                      (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℳℐ𝒩ℐℳ𝒰ℳ𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).minimumThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).minimumThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                    (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                      (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℳℐ𝒩ℐℳ𝒰ℳ𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒱ℰ𝒩𝒯ℐℒ𝒜𝒯ℰ𝒟 ::
      "BrakeDisk ⇒ Boolean"
                  ("(1(_).ventilated⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k)" 50) where
      "(X).ventilated⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒱ℰ𝒩𝒯ℐℒ𝒜𝒯ℰ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre ::
      "BrakeDisk ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre ::
      "BrakeDisk ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℐ𝒟_at_pre :: "BrakeDisk ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ_at_pre ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).diameterInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).diameterInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒞ℰ𝒩𝒯ℰℛℐ𝒩𝒢𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ_at_pre ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).centeringDiameterInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).centeringDiameterInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                    (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                      (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒞ℰ𝒩𝒯ℰℛℐ𝒩𝒢𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℛℐℳℋ𝒪ℒℰ𝒩𝒰ℳℬℰℛ_at_pre ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).rimHoleNumber⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).rimHoleNumber⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℛℐℳℋ𝒪ℒℰ𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℋ𝒪ℒℰ𝒜ℛℛ𝒜𝒩𝒢ℰℳℰ𝒩𝒯𝒩𝒰ℳℬℰℛ_at_pre ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).holeArrangementNumber⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).holeArrangementNumber⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                    (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                      (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℋ𝒪ℒℰ𝒜ℛℛ𝒜𝒩𝒢ℰℳℰ𝒩𝒯𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬ𝒪ℒ𝒯ℋ𝒪ℒℰ𝒞ℐℛ𝒞ℒℰℐ𝒩ℳℳ_at_pre ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).boltHoleCircleInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).boltHoleCircleInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬ𝒪ℒ𝒯ℋ𝒪ℒℰ𝒞ℐℛ𝒞ℒℰℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_at_pre ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).brakeDiskThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).brakeDiskThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                    (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                      (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℳℐ𝒩ℐℳ𝒰ℳ𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_at_pre ::
      "BrakeDisk ⇒ Integer"
                  ("(1(_).minimumThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).minimumThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                    (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                      (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℳℐ𝒩ℐℳ𝒰ℳ𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒱ℰ𝒩𝒯ℐℒ𝒜𝒯ℰ𝒟_at_pre ::
      "BrakeDisk ⇒ Boolean"
                  ("(1(_).ventilated⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre)" 50) where
      "(X).ventilated⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒱ℰ𝒩𝒯ℐℒ𝒜𝒯ℰ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ ::
      "BrakePad ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒪ℰℳ_𝒩𝒰ℳℬℰℛ ::
      "BrakePad ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 ::
      "BrakePad ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℐ𝒟 :: "BrakePad ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℰ𝒜ℛ𝒲𝒜ℛ𝒩ℐ𝒩𝒢 ::
      "BrakePad ⇒ Boolean"
                  ("(1(_).wearWarning⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)" 50) where
      "(X).wearWarning⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℰ𝒜ℛ𝒲𝒜ℛ𝒩ℐ𝒩𝒢 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℋℰℐ𝒢ℋ𝒯ℐ𝒩ℳℳ ::
      "BrakePad ⇒ Integer"
                  ("(1(_).heightInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)" 50) where
      "(X).heightInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℋℰℐ𝒢ℋ𝒯ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℐ𝒟𝒯ℋ𝒯ℐ𝒩ℳℳ ::
      "BrakePad ⇒ Integer"
                  ("(1(_).widthInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)" 50) where
      "(X).widthInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℐ𝒟𝒯ℋ𝒯ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ ::
      "BrakePad ⇒ Integer"
                  ("(1(_).thicknessInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d)" 50) where
      "(X).thicknessInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre ::
      "BrakePad ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre ::
      "BrakePad ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre ::
      "BrakePad ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℐ𝒟_at_pre :: "BrakePad ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℰ𝒜ℛ𝒲𝒜ℛ𝒩ℐ𝒩𝒢_at_pre ::
      "BrakePad ⇒ Boolean"
                  ("(1(_).wearWarning⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre)" 50) where
      "(X).wearWarning⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℰ𝒜ℛ𝒲𝒜ℛ𝒩ℐ𝒩𝒢 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℋℰℐ𝒢ℋ𝒯ℐ𝒩ℳℳ_at_pre ::
      "BrakePad ⇒ Integer"
                  ("(1(_).heightInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre)" 50) where
      "(X).heightInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℋℰℐ𝒢ℋ𝒯ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℐ𝒟𝒯ℋ𝒯ℐ𝒩ℳℳ_at_pre ::
      "BrakePad ⇒ Integer"
                  ("(1(_).widthInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre)" 50) where
      "(X).widthInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℐ𝒟𝒯ℋ𝒯ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_at_pre ::
      "BrakePad ⇒ Integer"
                  ("(1(_).thicknessInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre)" 50) where
      "(X).thicknessInMM⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ ::
      "BrakeCaliper ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ ::
      "BrakeCaliper ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 ::
      "BrakeCaliper ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℐ𝒟 :: "BrakeCaliper ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition deref_assocs⇩2ℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 :: "((𝔄, 𝔄 state) val) ⇒
                                                (oid list ⇒ (𝔄, 'a::null) val) ⇒
                                                𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ⇒ (𝔄, 'a) val" where
      "deref_assocs⇩2ℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 fst⇩s⇩n⇩d f ≡ (λ mk⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r (oid::oid)
              (_::⟨string⟩⇩⊥) (_::⟨int⟩⇩⊥) (_::⟨string⟩⇩⊥) (_::⟨string⟩⇩⊥)
              (_::⟨int⟩⇩⊥) (_::⟨int⟩⇩⊥) ⇒
          deref_assocs fst⇩s⇩n⇩d switch⇩2_1 oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 f oid)"
    text ‹Accessor for ‹BrakeCaliper›'s association ‹ℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮› to ‹BrakePad››
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 :: "BrakeCaliper ⇒ Set_BrakePad"
                  ("(1(_).brakePads)" 50) where
      "(X).brakePads ≡ eval_extract X
                        (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                          (deref_assocs⇩2ℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 post⇩s⇩t⇩a⇩t⇩e
                            (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d post⇩s⇩t⇩a⇩t⇩e))))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒫ℐ𝒮𝒯𝒪𝒩𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ ::
      "BrakeCaliper ⇒ Integer"
                  ("(1(_).pistonDiameterInMM⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)" 50) where
      "(X).pistonDiameterInMM⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒫ℐ𝒮𝒯𝒪𝒩𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ
                                reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ ::
      "BrakeCaliper ⇒ Integer"
                  ("(1(_).brakeDiskThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r)" 50) where
      "(X).brakeDiskThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ
                                reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre ::
      "BrakeCaliper ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre ::
      "BrakeCaliper ⇒ Integer"
                  ("(1(_).OEM'_number⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre)" 50) where
      "(X).OEM_number⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre ::
      "BrakeCaliper ⇒ String"
                  ("(1(_).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre)" 50) where
      "(X).fittingPosition⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℐ𝒟_at_pre :: "BrakeCaliper ⇒ String"
                  ("(1(_).id⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre)" 50) where
      "(X).id⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_at_pre :: "BrakeCaliper ⇒ Set_BrakePad"
                  ("(1(_).brakePads@pre)" 50) where
      "(X).brakePads@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (deref_assocs⇩2ℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮 pre⇩s⇩t⇩a⇩t⇩e
                                (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮
                                  (deref_oid⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d pre⇩s⇩t⇩a⇩t⇩e))))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒫ℐ𝒮𝒯𝒪𝒩𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ_at_pre ::
      "BrakeCaliper ⇒ Integer"
                  ("(1(_).pistonDiameterInMM⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre)" 50) where
      "(X).pistonDiameterInMM⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒫ℐ𝒮𝒯𝒪𝒩𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ
                                reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_at_pre ::
      "BrakeCaliper ⇒ Integer"
                  ("(1(_).brakeDiskThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre)" 50) where
      "(X).brakeDiskThicknessInMM⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ
                                reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 :: "Parameter ⇒ String"
                  ("(1(_).id⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).id⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ :: "Parameter ⇒ String"
                  ("(1(_).name⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).name⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 :: "Parameter ⇒ String"
                  ("(1(_).description⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).description⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_at_pre :: "Parameter ⇒ String"
                  ("(1(_).id⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).id⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_at_pre :: "Parameter ⇒ String"
                  ("(1(_).name⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).name⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre :: "Parameter ⇒ String"
                  ("(1(_).description⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).description⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩eℐ𝒟 :: "Namespace ⇒ String"
                  ("(1(_).id⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e)" 50) where
      "(X).id⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ≡ eval_extract X
                            (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩eℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒩𝒜ℳℰ :: "Namespace ⇒ String"
                  ("(1(_).name⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e)" 50) where
      "(X).name⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ≡ eval_extract X
                            (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 :: "Namespace ⇒ String"
                  ("(1(_).description⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e)" 50) where
      "(X).description⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ≡ eval_extract X
                            (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e post⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition deref_assocs⇩2𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 :: "((𝔄, 𝔄 state) val) ⇒
                                                (oid list ⇒ (𝔄, 'a::null) val) ⇒
                                                𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e ⇒ (𝔄, 'a) val" where
      "deref_assocs⇩2𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 fst⇩s⇩n⇩d f ≡ (λ mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e (oid::oid)
              (_::⟨string⟩⇩⊥) (_::⟨string⟩⇩⊥) (_::⟨string⟩⇩⊥) ⇒
          deref_assocs fst⇩s⇩n⇩d switch⇩2_1 oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 f oid)"
    text ‹Accessor for ‹Namespace›'s association ‹𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮› to ‹Parameter››
    definition dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 :: "Namespace ⇒ Set_Parameter"
                  ("(1(_).parameters)" 50) where
      "(X).parameters ≡ eval_extract X
                        (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e post⇩s⇩t⇩a⇩t⇩e
                          (deref_assocs⇩2𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 post⇩s⇩t⇩a⇩t⇩e
                            (select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮
                              (deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e))))"

    definition dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩eℐ𝒟_at_pre :: "Namespace ⇒ String"
                  ("(1(_).id⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e@pre)" 50) where
      "(X).id⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e@pre ≡ eval_extract X
                            (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩eℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒩𝒜ℳℰ_at_pre :: "Namespace ⇒ String"
                  ("(1(_).name⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e@pre)" 50) where
      "(X).name⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e@pre ≡ eval_extract X
                            (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre :: "Namespace ⇒ String"
                  ("(1(_).description⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e@pre)" 50) where
      "(X).description⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e@pre ≡ eval_extract X
                            (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_at_pre :: "Namespace ⇒ Set_Parameter"
                  ("(1(_).parameters@pre)" 50) where
      "(X).parameters@pre ≡ eval_extract X
                            (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e pre⇩s⇩t⇩a⇩t⇩e
                              (deref_assocs⇩2𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 pre⇩s⇩t⇩a⇩t⇩e
                                (select⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮
                                  (deref_oid⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e))))"

    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 :: "NumericParameter ⇒ String"
                  ("(1(_).id⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).id⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ :: "NumericParameter ⇒ String"
                  ("(1(_).name⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).name⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 ::
      "NumericParameter ⇒ String"
                  ("(1(_).description⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).description⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ :: "NumericParameter ⇒ Real"
                  ("(1(_).value⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).value⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 :: "NumericParameter ⇒ String"
                  ("(1(_).unit⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).unit⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_at_pre :: "NumericParameter ⇒ String"
                  ("(1(_).id⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).id⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_at_pre :: "NumericParameter ⇒ String"
                  ("(1(_).name⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).name⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre ::
      "NumericParameter ⇒ String"
                  ("(1(_).description⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).description⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ_at_pre :: "NumericParameter ⇒ Real"
                  ("(1(_).value⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).value⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯_at_pre :: "NumericParameter ⇒ String"
                  ("(1(_).unit⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).unit⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 :: "StringParameter ⇒ String"
                  ("(1(_).id⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).id⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ :: "StringParameter ⇒ String"
                  ("(1(_).name⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).name⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 :: "StringParameter ⇒ String"
                  ("(1(_).description⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).description⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ :: "StringParameter ⇒ String"
                  ("(1(_).value⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).value⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 :: "StringParameter ⇒ String"
                  ("(1(_).unit⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).unit⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_at_pre :: "StringParameter ⇒ String"
                  ("(1(_).id⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).id⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_at_pre :: "StringParameter ⇒ String"
                  ("(1(_).name⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).name⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre :: "StringParameter ⇒ String"
                  ("(1(_).description⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).description⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ_at_pre :: "StringParameter ⇒ String"
                  ("(1(_).value⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).value⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯_at_pre :: "StringParameter ⇒ String"
                  ("(1(_).unit⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).unit⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 :: "BooleanParameter ⇒ String"
                  ("(1(_).id⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).id⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ :: "BooleanParameter ⇒ String"
                  ("(1(_).name⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).name⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 ::
      "BooleanParameter ⇒ String"
                  ("(1(_).description⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).description⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ :: "BooleanParameter ⇒ Boolean"
                  ("(1(_).value⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r)" 50) where
      "(X).value⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r ≡ eval_extract X
                            (deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_at_pre :: "BooleanParameter ⇒ String"
                  ("(1(_).id⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).id⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_at_pre :: "BooleanParameter ⇒ String"
                  ("(1(_).name⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).name⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre ::
      "BooleanParameter ⇒ String"
                  ("(1(_).description⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).description⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ_at_pre :: "BooleanParameter ⇒ Boolean"
                  ("(1(_).value⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre)" 50) where
      "(X).value⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r@pre ≡ eval_extract X
                            (deref_oid⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩lℐ𝒟 :: "CAD_Model ⇒ String"
                  ("(1(_).id⇩C⇩A⇩D⇩'_⇩M⇩o⇩d⇩e⇩l)" 50) where
      "(X).id⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ≡ eval_extract X
                            (deref_oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l post⇩s⇩t⇩a⇩t⇩e
                              (select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩lℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ :: "CAD_Model ⇒ String"
                  ("(1(_).name⇩C⇩A⇩D⇩'_⇩M⇩o⇩d⇩e⇩l)" 50) where
      "(X).name⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ≡ eval_extract X
                            (deref_oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l post⇩s⇩t⇩a⇩t⇩e
                              (select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition deref_assocs⇩2𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 :: "((𝔄, 𝔄 state) val) ⇒
                                                (oid list ⇒ (𝔄, 'a::null) val) ⇒
                                                𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l ⇒ (𝔄, 'a) val" where
      "deref_assocs⇩2𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 fst⇩s⇩n⇩d f ≡ (λ mk⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l (oid::oid)
          (_::⟨string⟩⇩⊥) (_::⟨string⟩⇩⊥) ⇒
            deref_assocs fst⇩s⇩n⇩d switch⇩2_1 oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 f oid)"
    text ‹Accessor for ‹CAD_Model›'s association ‹𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮› to ‹Namespace››
    definition dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 :: "CAD_Model ⇒ Set_Namespace"
                  ("(1(_).namespaces)" 50) where
      "(X).namespaces ≡ eval_extract X
                        (deref_oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l post⇩s⇩t⇩a⇩t⇩e
                          (deref_assocs⇩2𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 post⇩s⇩t⇩a⇩t⇩e
                            (select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮
                              (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e post⇩s⇩t⇩a⇩t⇩e))))"

    definition dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩lℐ𝒟_at_pre :: "CAD_Model ⇒ String"
                  ("(1(_).id⇩C⇩A⇩D⇩'_⇩M⇩o⇩d⇩e⇩l@pre)" 50) where
      "(X).id⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l@pre ≡ eval_extract X
                            (deref_oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩lℐ𝒟 reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ_at_pre :: "CAD_Model ⇒ String"
                  ("(1(_).name⇩C⇩A⇩D⇩'_⇩M⇩o⇩d⇩e⇩l@pre)" 50) where
      "(X).name⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l@pre ≡ eval_extract X
                            (deref_oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_at_pre :: "CAD_Model ⇒ Set_Namespace"
                  ("(1(_).namespaces@pre)" 50) where
      "(X).namespaces@pre ≡ eval_extract X
                            (deref_oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l pre⇩s⇩t⇩a⇩t⇩e
                              (deref_assocs⇩2𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 pre⇩s⇩t⇩a⇩t⇩e
                                (select⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮
                                  (deref_oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e pre⇩s⇩t⇩a⇩t⇩e))))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ :: "BrakeSystem ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℐ𝒩𝒮𝒯𝒜𝒩𝒞ℰ𝒩𝒜ℳℰ :: "BrakeSystem ⇒ String"
                  ("(1(_).instanceName⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m)" 50) where
      "(X).instanceName⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m post⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℐ𝒩𝒮𝒯𝒜𝒩𝒞ℰ𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"

    definition deref_assocs⇩2ℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 :: "((𝔄, 𝔄 state) val) ⇒
                                                        (oid list ⇒ (𝔄, 'a::null) val) ⇒
                                                        𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m ⇒ (𝔄, 'a) val" where
      "deref_assocs⇩2ℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 fst⇩s⇩n⇩d f ≡ (λ mk⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m (oid::oid)
              (_::⟨string⟩⇩⊥) (_::⟨string⟩⇩⊥) ⇒
          deref_assocs fst⇩s⇩n⇩d switch⇩2_1 oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 f oid)"
    text ‹Accessor for ‹BrakeSystem›'s association to ‹BrakeComponent››
    definition dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 ::
      "BrakeSystem ⇒ Set_BrakeComponent"
                  ("(1(_).brakeComponents)" 50) where
      "(X).brakeComponents ≡ eval_extract X
                        (deref_oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m post⇩s⇩t⇩a⇩t⇩e
                          (deref_assocs⇩2ℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 post⇩s⇩t⇩a⇩t⇩e
                            (select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮
                              (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t post⇩s⇩t⇩a⇩t⇩e))))"

    definition dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre ::
      "BrakeSystem ⇒ String"
                  ("(1(_).specificationType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m@pre)" 50) where
      "(X).specificationType⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℐ𝒩𝒮𝒯𝒜𝒩𝒞ℰ𝒩𝒜ℳℰ_at_pre :: "BrakeSystem ⇒ String"
                  ("(1(_).instanceName⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m@pre)" 50) where
      "(X).instanceName⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m@pre ≡ eval_extract X
                            (deref_oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m pre⇩s⇩t⇩a⇩t⇩e
                              (select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℐ𝒩𝒮𝒯𝒜𝒩𝒞ℰ𝒩𝒜ℳℰ reconst⇩𝒯⇩_⇩b⇩a⇩s⇩e))"
    definition dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_at_pre ::
      "BrakeSystem ⇒ Set_BrakeComponent"
                  ("(1(_).brakeComponents@pre)" 50) where
      "(X).brakeComponents@pre ≡ eval_extract X
                           (deref_oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m pre⇩s⇩t⇩a⇩t⇩e
                             (deref_assocs⇩2ℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 pre⇩s⇩t⇩a⇩t⇩e
                               (select⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮
                                 (deref_oid⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t pre⇩s⇩t⇩a⇩t⇩e))))"

    lemmas dot_accessor =
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_def dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_def dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_def dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℐ𝒟_def dot⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩tℐ𝒟_at_pre_def
      dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_def dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre_def
      dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_def dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre_def
      dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_def dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℐ𝒟_def dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℐ𝒟_at_pre_def
      dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮ℰ𝒩𝒮𝒪ℛ𝒯𝒴𝒫ℰ_def dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒮ℰ𝒩𝒮𝒪ℛ𝒯𝒴𝒫ℰ_at_pre_def
      dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒟ℰ𝒫𝒯ℋ_def dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒟ℰ𝒫𝒯ℋ_at_pre_def
      dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒩𝒰ℳℬℰℛ𝒪ℱ𝒫ℐ𝒩𝒮_def dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩r𝒩𝒰ℳℬℰℛ𝒪ℱ𝒫ℐ𝒩𝒮_at_pre_def
      dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ_def dot⇩A⇩B⇩S⇩S⇩e⇩n⇩s⇩o⇩rℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_def dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_def dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_def dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℐ𝒟_def dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℐ𝒟_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ1_def dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ1_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ2_def dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩e𝒯ℋℛℰ𝒜𝒟𝒮ℐ𝒵ℰ2_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ_def dot⇩B⇩r⇩a⇩k⇩e⇩H⇩o⇩s⇩eℒℰ𝒩𝒢𝒯ℋℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_def dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_def dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_def dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℐ𝒟_def dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℐ𝒟_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ_def dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒞ℰ𝒩𝒯ℰℛℐ𝒩𝒢𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒞ℰ𝒩𝒯ℰℛℐ𝒩𝒢𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℛℐℳℋ𝒪ℒℰ𝒩𝒰ℳℬℰℛ_def dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℛℐℳℋ𝒪ℒℰ𝒩𝒰ℳℬℰℛ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℋ𝒪ℒℰ𝒜ℛℛ𝒜𝒩𝒢ℰℳℰ𝒩𝒯𝒩𝒰ℳℬℰℛ_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℋ𝒪ℒℰ𝒜ℛℛ𝒜𝒩𝒢ℰℳℰ𝒩𝒯𝒩𝒰ℳℬℰℛ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬ𝒪ℒ𝒯ℋ𝒪ℒℰ𝒞ℐℛ𝒞ℒℰℐ𝒩ℳℳ_def dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬ𝒪ℒ𝒯ℋ𝒪ℒℰ𝒞ℐℛ𝒞ℒℰℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℳℐ𝒩ℐℳ𝒰ℳ𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩kℳℐ𝒩ℐℳ𝒰ℳ𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒱ℰ𝒩𝒯ℐℒ𝒜𝒯ℰ𝒟_def dot⇩B⇩r⇩a⇩k⇩e⇩D⇩i⇩s⇩k𝒱ℰ𝒩𝒯ℐℒ𝒜𝒯ℰ𝒟_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_def dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_def dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_def dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℐ𝒟_def dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℐ𝒟_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℰ𝒜ℛ𝒲𝒜ℛ𝒩ℐ𝒩𝒢_def dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℰ𝒜ℛ𝒲𝒜ℛ𝒩ℐ𝒩𝒢_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℋℰℐ𝒢ℋ𝒯ℐ𝒩ℳℳ_def dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩dℋℰℐ𝒢ℋ𝒯ℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℐ𝒟𝒯ℋ𝒯ℐ𝒩ℳℳ_def dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒲ℐ𝒟𝒯ℋ𝒯ℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_def dot⇩B⇩r⇩a⇩k⇩e⇩P⇩a⇩d𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_def dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_def dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒪ℰℳ_𝒩𝒰ℳℬℰℛ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_def dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℱℐ𝒯𝒯ℐ𝒩𝒢𝒫𝒪𝒮ℐ𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℐ𝒟_def dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℐ𝒟_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_def dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒫ℐ𝒮𝒯𝒪𝒩𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩r𝒫ℐ𝒮𝒯𝒪𝒩𝒟ℐ𝒜ℳℰ𝒯ℰℛℐ𝒩ℳℳ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_def
      dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒟ℐ𝒮𝒦𝒯ℋℐ𝒞𝒦𝒩ℰ𝒮𝒮ℐ𝒩ℳℳ_at_pre_def
      dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_def dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_at_pre_def
      dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_def dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_at_pre_def
      dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_def dot⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩eℐ𝒟_def dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩eℐ𝒟_at_pre_def
      dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒩𝒜ℳℰ_def dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒩𝒜ℳℰ_at_pre_def
      dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_def dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_def dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_at_pre_def
      dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_def dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_at_pre_def
      dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_def dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_at_pre_def
      dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_def dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ_def dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ_at_pre_def
      dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯_def dot⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯_at_pre_def
      dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_def dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_at_pre_def
      dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_def dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_at_pre_def
      dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_def dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ_def dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ_at_pre_def
      dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯_def dot⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒰𝒩ℐ𝒯_at_pre_def
      dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_def dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩rℐ𝒟_at_pre_def
      dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_def dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒩𝒜ℳℰ_at_pre_def
      dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_def dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒟ℰ𝒮𝒞ℛℐ𝒫𝒯ℐ𝒪𝒩_at_pre_def
      dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ_def dot⇩B⇩o⇩o⇩l⇩e⇩a⇩n⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r𝒱𝒜ℒ𝒰ℰ_at_pre_def
      dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩lℐ𝒟_def dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩lℐ𝒟_at_pre_def
      dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ_def dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ_at_pre_def
      dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_def dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_def dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m𝒮𝒫ℰ𝒞ℐℱℐ𝒞𝒜𝒯ℐ𝒪𝒩𝒯𝒴𝒫ℰ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℐ𝒩𝒮𝒯𝒜𝒩𝒞ℰ𝒩𝒜ℳℰ_def dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℐ𝒩𝒮𝒯𝒜𝒩𝒞ℰ𝒩𝒜ℳℰ_at_pre_def
      dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_def dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_at_pre_def

    lemmas [simp] = eval_extract_def

    lemma cp_dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮:
      fixes
        X :: "BrakeCaliper" and
        τ :: "𝔄 st"
      shows "((X).brakePads) τ = ((λ _. X τ).brakePads) τ"
      by (simp add: dot_accessor)
    lemma cp_dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮:
      fixes
        X :: "Namespace" and
        τ :: "𝔄 st"
      shows "((X).parameters) τ = ((λ (_::𝔄 st). X τ).parameters) τ"
      by (simp add: dot_accessor)

    lemma cp_dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_at_pre:
      fixes
        X :: "BrakeCaliper" and
        τ :: "𝔄 st"
      shows "((X).brakePads@pre) τ = ((λ _. X τ).brakePads@pre) τ"
      by (simp add: dot_accessor)
    lemma cp_dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_at_pre:
      fixes
        X :: "Namespace" and
        τ :: "𝔄 st"
      shows "((X).parameters@pre) τ = ((λ (_::𝔄 st). X τ).parameters@pre) τ"
      by (simp add: dot_accessor)

    lemmas cp_dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_I [simp, intro!]=
      cp_dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮[THEN allI [THEN allI],
                of "λ (X::BrakeCaliper) (_::𝔄 st). X"
                    "λ (_::BrakeCaliper) (τ::𝔄 st). τ", THEN cpI1]
    lemmas cp_dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_at_pre_I [simp, intro!]=
      cp_dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_at_pre[THEN allI [THEN allI],
                of "λ (X::BrakeCaliper) (_::𝔄 st). X"
                    "λ (_::BrakeCaliper) (τ::𝔄 st). τ", THEN cpI1]
    lemmas cp_dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_I [simp, intro!]=
      cp_dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮[THEN allI [THEN allI],
                of "λ (X::Namespace) (_::𝔄 st). X"
                    "λ (_::Namespace) (τ::𝔄 st). τ", THEN cpI1]
    lemmas cp_dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_at_pre_I [simp, intro!]=
      cp_dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_at_pre[THEN allI [THEN allI],
                of "λ (X::Namespace) (_::𝔄 st). X"
                    "λ (_::Namespace) (τ::𝔄 st). τ", THEN cpI1]

    lemma cp_dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮:
      fixes
        X :: "CAD_Model" and
        τ :: "𝔄 st"
      shows "((X).namespaces) τ = ((λ _. X τ).namespaces) τ"
      by (simp add: dot_accessor)
    lemma cp_dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮:
      fixes
        X :: "BrakeSystem" and
        τ :: "𝔄 st"
      shows "((X).brakeComponents) τ = ((λ (_::𝔄 st). X τ).brakeComponents) τ"
      by (simp add: dot_accessor)

    lemma cp_dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_at_pre:
      fixes
        X :: "CAD_Model" and
        τ :: "𝔄 st"
      shows "((X).namespaces@pre) τ = ((λ _. X τ).namespaces@pre) τ"
      by (simp add: dot_accessor)
    lemma cp_dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_at_pre:
      fixes
        X :: "BrakeSystem" and
        τ :: "𝔄 st"
      shows "((X).brakeComponents@pre) τ =
                ((λ (_::𝔄 st). X τ).brakeComponents@pre) τ"
      by (simp add: dot_accessor)

    lemmas cp_dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_I [simp, intro!]=
      cp_dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮[THEN allI [THEN allI],
                of "λ (X::CAD_Model) (_::𝔄 st). X"
                    "λ (_::CAD_Model) (τ::𝔄 st). τ", THEN cpI1]
    lemmas cp_dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_at_pre_I [simp, intro!]=
      cp_dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_at_pre[THEN allI [THEN allI],
                of "λ (X::CAD_Model) (_::𝔄 st). X"
                    "λ (_::CAD_Model) (τ::𝔄 st). τ", THEN cpI1]
    lemmas cp_dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_I [simp, intro!]=
      cp_dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮[THEN allI [THEN allI],
                of "λ (X::BrakeSystem) (_::𝔄 st). X"
                    "λ (_::BrakeSystem) (τ::𝔄 st). τ", THEN cpI1]
    lemmas cp_dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_at_pre_I [simp, intro!]=
      cp_dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_at_pre[THEN allI [THEN allI],
                of "λ (X::BrakeSystem) (_::𝔄 st). X"
                    "λ (_::BrakeSystem) (τ::𝔄 st). τ", THEN cpI1]

    lemma dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_nullstrict [simp]:
      "(null::BrakeCaliper).brakePads = invalid"
      unfolding dot_accessor null_fun_def null_option_def bot_option_def
      by (rule ext, simp)
    lemma dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_at_pre_nullstrict [simp]:
      "(null::BrakeCaliper).brakePads@pre = invalid"
      unfolding dot_accessor null_fun_def null_option_def bot_option_def
      by (rule ext, simp)
    lemma dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_strict [simp]:
      "(invalid::BrakeCaliper).brakePads = invalid"
      by (rule ext, simp add: dot_accessor bot_option_def invalid_def)
    lemma dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_at_pre_strict [simp]:
      "(invalid::BrakeCaliper).brakePads@pre = invalid"
      by (rule ext, simp add: dot_accessor bot_option_def invalid_def)

    lemma dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_nullstrict [simp]:
      "(null::Namespace).parameters = invalid"
      unfolding dot_accessor null_fun_def null_option_def bot_option_def
      by (rule ext, simp)
    lemma dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_at_pre_nullstrict [simp]:
      "(null::Namespace).parameters@pre = invalid"
      unfolding dot_accessor null_fun_def null_option_def bot_option_def
      by (rule ext, simp)
    lemma dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_strict [simp]:
      "(invalid::Namespace).parameters = invalid"
      by (rule ext, simp add: dot_accessor bot_option_def invalid_def)
    lemma dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_at_pre_strict [simp]:
      "(invalid::Namespace).parameters@pre = invalid"
      by (rule ext, simp add: dot_accessor bot_option_def invalid_def)

    lemma dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_nullstrict [simp]:
      "(null::CAD_Model).namespaces = invalid"
      unfolding dot_accessor null_fun_def null_option_def bot_option_def
      by (rule ext, simp)
    lemma dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_at_pre_nullstrict [simp]:
      "(null::CAD_Model).namespaces@pre = invalid"
      unfolding dot_accessor null_fun_def null_option_def bot_option_def
      by (rule ext, simp)
    lemma dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_strict [simp]:
      "(invalid::CAD_Model).namespaces = invalid"
      by (rule ext, simp add: dot_accessor bot_option_def invalid_def)
    lemma dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_at_pre_strict [simp]:
      "(invalid::CAD_Model).namespaces@pre = invalid"
      by (rule ext, simp add: dot_accessor bot_option_def invalid_def)

    lemma dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_nullstrict [simp]:
      "(null::BrakeSystem).brakeComponents = invalid"
      unfolding dot_accessor null_fun_def null_option_def bot_option_def
      by (rule ext, simp)
    lemma dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_at_pre_nullstrict [simp]:
      "(null::BrakeSystem).brakeComponents@pre = invalid"
      unfolding dot_accessor null_fun_def null_option_def bot_option_def
      by (rule ext, simp)
    lemma dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_strict [simp]:
      "(invalid::BrakeSystem).brakeComponents = invalid"
      by (rule ext, simp add: dot_accessor bot_option_def invalid_def)
    lemma dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_at_pre_strict [simp]:
      "(invalid::BrakeSystem).brakeComponents@pre = invalid"
      by (rule ext, simp add: dot_accessor bot_option_def invalid_def)

    lemma dot⇩B⇩r⇩a⇩k⇩e⇩C⇩a⇩l⇩i⇩p⇩e⇩rℬℛ𝒜𝒦ℰ𝒫𝒜𝒟𝒮_def_mono:
      fixes
        X :: "BrakeCaliper" and
        τ :: "𝔄 st"
      shows "τ ⊨ δ(X .brakePads) ⟹ τ ⊨ δ(X)"
      apply(case_tac "τ ⊨ (X ≜ invalid)")
      apply(insert StrongEq_L_subst2[where
              P = "(λ x::BrakeCaliper. (δ (x .brakePads)))" and
              τ = "τ" and x = "X" and y = "invalid"])
      apply(simp, case_tac "τ ⊨ (X ≜ null)")
      apply(insert StrongEq_L_subst2[where
              P = "(λ x::BrakeCaliper. (δ (x .brakePads)))" and
              τ = "τ" and x = "X" and y = "null"])
      by(simp, simp add: defined_split)

    lemma dot⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮_def_mono:
      fixes
        X :: "Namespace" and
        τ :: "𝔄 st"
      shows "τ ⊨ δ(X .parameters) ⟹ τ ⊨ δ(X)"
      apply(case_tac "τ ⊨ (X ≜ invalid)")
      apply(insert StrongEq_L_subst2[where
              P = "(λ x::Namespace. (δ (x .parameters)))" and
              τ = "τ" and x = "X" and y = "invalid"])
      apply(simp, case_tac "τ ⊨ (X ≜ null)")
      apply(insert StrongEq_L_subst2[where
              P = "(λ x::Namespace. (δ (x .parameters)))" and
              τ = "τ" and x = "X" and y = "null"])
      by(simp, simp add: defined_split)

    lemma dot⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮_def_mono:
      fixes
        X :: "CAD_Model" and
        τ :: "𝔄 st"
      shows "τ ⊨ δ(X .namespaces) ⟹ τ ⊨ δ(X)"
      apply(case_tac "τ ⊨ (X ≜ invalid)")
      apply(insert StrongEq_L_subst2[where
              P = "(λ x::CAD_Model. (δ (x .namespaces)))" and
              τ = "τ" and x = "X" and y = "invalid"])
      apply(simp, case_tac "τ ⊨ (X ≜ null)")
      apply(insert StrongEq_L_subst2[where
              P = "(λ x::CAD_Model. (δ (x .namespaces)))" and
              τ = "τ" and x = "X" and y = "null"])
      by(simp, simp add: defined_split)

    lemma dot⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮_def_mono:
      fixes
        X :: "BrakeSystem" and
        τ :: "𝔄 st"
      shows "τ ⊨ δ(X .brakeComponents) ⟹ τ ⊨ δ(X)"
      apply(case_tac "τ ⊨ (X ≜ invalid)")
      apply(insert StrongEq_L_subst2[where
              P = "(λ x::BrakeSystem. (δ (x .brakeComponents)))" and
              τ = "τ" and x = "X" and y = "invalid"])
      apply(simp, case_tac "τ ⊨ (X ≜ null)")
      apply(insert StrongEq_L_subst2[where
              P = "(λ x::BrakeSystem. (δ (x .brakeComponents)))" and
              τ = "τ" and x = "X" and y = "null"])
      by(simp, simp add: defined_split)

    subsection ‹Example Heap›

    text ‹An example state that suffices for our constraints›

    definition σ⇩0 :: "𝔄 state" where
      "σ⇩0 ≡ ⦇heap = Map.empty, assocs = Map.empty⦈"

    definition oid⇩B⇩C⇩0 :: "'a::zero"    where "oid⇩B⇩C⇩0 ≡  0"
    definition oid⇩B⇩C⇩1 :: "'a::numeral" where "oid⇩B⇩C⇩1 ≡  1"
    definition oid⇩B⇩S⇩0 :: "'a::numeral" where "oid⇩B⇩S⇩0 ≡  2"
    definition oid⇩B⇩S⇩1 :: "'a::numeral" where "oid⇩B⇩S⇩1 ≡  3"
    definition oid⇩S⇩P⇩0 :: "'a::numeral" where "oid⇩S⇩P⇩0 ≡  4"
    definition oid⇩S⇩P⇩1 :: "'a::numeral" where "oid⇩S⇩P⇩1 ≡  5"
    definition oid⇩N⇩P⇩0 :: "'a::numeral" where "oid⇩N⇩P⇩0 ≡  6"
    definition oid⇩N⇩P⇩1 :: "'a::numeral" where "oid⇩N⇩P⇩1 ≡  7"
    definition oid⇩N⇩S⇩0 :: "'a::numeral" where "oid⇩N⇩S⇩0 ≡  8"
    definition oid⇩N⇩S⇩1 :: "'a::numeral" where "oid⇩N⇩S⇩1 ≡  9"
    definition oid⇩N⇩S⇩2 :: "'a::numeral" where "oid⇩N⇩S⇩2 ≡ 10"
    definition oid⇩N⇩S⇩3 :: "'a::numeral" where "oid⇩N⇩S⇩3 ≡ 11"
    definition oid⇩C⇩M⇩0 :: "'a::numeral" where "oid⇩C⇩M⇩0 ≡ 12"
    definition oid⇩C⇩M⇩1 :: "'a::numeral" where "oid⇩C⇩M⇩1 ≡ 13"

    definition oids :: "'a::{zero,numeral} list" where
      "oids ≡ [oid⇩B⇩C⇩0, oid⇩B⇩C⇩1, oid⇩B⇩S⇩0, oid⇩B⇩S⇩1, oid⇩S⇩P⇩0, oid⇩S⇩P⇩1,
                oid⇩N⇩P⇩0, oid⇩N⇩P⇩1, oid⇩N⇩S⇩0, oid⇩N⇩S⇩1, oid⇩N⇩S⇩2, oid⇩N⇩S⇩3,
                oid⇩C⇩M⇩0, oid⇩C⇩M⇩1]"

    definition id⇩B⇩C⇩0 :: "string" where "id⇩B⇩C⇩0 ≡ ''c1''"
    definition id⇩B⇩C⇩1 :: "string" where "id⇩B⇩C⇩1 ≡ ''c2''"
    definition id⇩S⇩P⇩0 :: "string" where "id⇩S⇩P⇩0 ≡ ''p1''"
    definition id⇩S⇩P⇩1 :: "string" where "id⇩S⇩P⇩1 ≡ ''p2''"
    definition id⇩N⇩P⇩0 :: "string" where "id⇩N⇩P⇩0 ≡ ''p3''"
    definition id⇩N⇩P⇩1 :: "string" where "id⇩N⇩P⇩1 ≡ ''p4''"
    definition id⇩N⇩S⇩0 :: "string" where "id⇩N⇩S⇩0 ≡ ''n1''"
    definition id⇩N⇩S⇩1 :: "string" where "id⇩N⇩S⇩1 ≡ ''n2''"
    definition id⇩N⇩S⇩2 :: "string" where "id⇩N⇩S⇩2 ≡ ''n3''"
    definition id⇩N⇩S⇩3 :: "string" where "id⇩N⇩S⇩3 ≡ ''n4''"
    definition id⇩C⇩M⇩0 :: "string" where "id⇩C⇩M⇩0 ≡ ''m1''"
    definition id⇩C⇩M⇩1 :: "string" where "id⇩C⇩M⇩1 ≡ ''m2''"
    definition ids  :: "string list" where
      "ids ≡ [id⇩B⇩C⇩0, id⇩B⇩C⇩1, id⇩S⇩P⇩0, id⇩S⇩P⇩1, id⇩N⇩P⇩0, id⇩N⇩P⇩1,
                id⇩N⇩S⇩0, id⇩N⇩S⇩1, id⇩N⇩S⇩2, id⇩N⇩S⇩3, id⇩C⇩M⇩0, id⇩C⇩M⇩1]"

    definition st⇩B⇩C⇩0 :: "string" where "st⇩B⇩C⇩0 ≡ ''t1''"
    definition st⇩B⇩C⇩1 :: "string" where "st⇩B⇩C⇩1 ≡ ''t2''"
    definition st⇩B⇩S⇩0 :: "string" where "st⇩B⇩S⇩0 ≡ ''t3''"
    definition st⇩B⇩S⇩1 :: "string" where "st⇩B⇩S⇩1 ≡ ''t4''"
    definition specificationTypes :: "string list" where
      "specificationTypes ≡ [st⇩B⇩C⇩0, st⇩B⇩C⇩1, st⇩B⇩S⇩0, st⇩B⇩S⇩1]"

    definition on⇩0 :: "int" where "on⇩0 ≡ 1"
    definition on⇩1 :: "int" where "on⇩1 ≡ 2"
    definition oemNumbers :: "int list" where
      "oemNumbers ≡ [on⇩0, on⇩1]"

    definition fp⇩0 :: "string" where "fp⇩0 ≡ ''f1''"
    definition fp⇩1 :: "string" where "fp⇩1 ≡ ''f2''"
    definition fittingPositions :: "string list" where
      "fittingPositions ≡ [fp⇩0, fp⇩1]"

    definition in⇩0 :: "string" where "in⇩0 ≡ ''i1''"
    definition in⇩1 :: "string" where "in⇩1 ≡ ''i2''"
    definition instanceNames :: "string list" where
      "instanceNames ≡ [in⇩0, in⇩1]"

    definition na⇩0 :: "string" where "na⇩0 ≡ ''n1''"
    definition na⇩1 :: "string" where "na⇩1 ≡ ''n2''"
    definition na⇩2 :: "string" where "na⇩2 ≡ ''n3''"
    definition na⇩3 :: "string" where "na⇩3 ≡ ''n4''"
    definition na⇩4 :: "string" where "na⇩4 ≡ ''n5''"
    definition na⇩5 :: "string" where "na⇩5 ≡ ''n6''"
    definition na⇩6 :: "string" where "na⇩6 ≡ ''n7''"
    definition na⇩7 :: "string" where "na⇩7 ≡ ''n8''"
    definition names :: "string list" where
      "names ≡ [na⇩0, na⇩1, na⇩2, na⇩3, na⇩4, na⇩5, na⇩6, na⇩7]"

    definition de⇩0 :: "string" where "de⇩0 ≡ ''d1''"
    definition de⇩1 :: "string" where "de⇩1 ≡ ''d2''"
    definition de⇩2 :: "string" where "de⇩2 ≡ ''d3''"
    definition de⇩3 :: "string" where "de⇩3 ≡ ''d4''"
    definition de⇩4 :: "string" where "de⇩4 ≡ ''d5''"
    definition de⇩5 :: "string" where "de⇩5 ≡ ''d6''"
    definition de⇩6 :: "string" where "de⇩6 ≡ ''d7''"
    definition de⇩7 :: "string" where "de⇩7 ≡ ''d8''"
    definition descriptions :: "string list" where
      "descriptions ≡ [de⇩0, de⇩1, de⇩2, de⇩3, de⇩4, de⇩5, de⇩6, de⇩7]"

    definition va⇩0 :: "string" where "va⇩0 ≡ ''v1''"
    definition va⇩1 :: "string" where "va⇩1 ≡ ''v2''"
    definition va⇩2 :: "real"   where "va⇩2 ≡ 1.0"
    definition va⇩3 :: "real"   where "va⇩3 ≡ 2.0"
    definition string_values :: "string list" where
      "string_values ≡ [va⇩0, va⇩1]"
    definition numeric_values :: "real list" where
      "numeric_values ≡ [va⇩2, va⇩3]"

    definition un⇩0 :: "string" where "un⇩0 ≡ ''u1''"
    definition un⇩1 :: "string" where "un⇩1 ≡ ''u2''"
    definition un⇩2 :: "string" where "un⇩2 ≡ ''u3''"
    definition un⇩3 :: "string" where "un⇩3 ≡ ''u4''"
    definition units :: "string list" where
      "units ≡ [un⇩0, un⇩1, un⇩2, un⇩3]"

    definition brakecomponent⇩1 :: "𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t" where
      "brakecomponent⇩1 ≡ mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid⇩B⇩C⇩0 ⌊st⇩B⇩C⇩0⌋ ⌊on⇩0⌋ ⌊fp⇩0⌋ ⌊id⇩B⇩C⇩0⌋"
    definition brakecomponent⇩2 :: "𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t" where
      "brakecomponent⇩2 ≡ mk⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t oid⇩B⇩C⇩1 ⌊st⇩B⇩C⇩1⌋ ⌊on⇩1⌋ ⌊fp⇩1⌋ ⌊id⇩B⇩C⇩1⌋"

    definition cad_model⇩1 :: "𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l" where
      "cad_model⇩1 ≡ mk⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l oid⇩C⇩M⇩0 ⌊id⇩C⇩M⇩0⌋ ⌊na⇩3⌋"
    definition cad_model⇩2 :: "𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l" where
      "cad_model⇩2 ≡ mk⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l oid⇩C⇩M⇩1 ⌊id⇩C⇩M⇩1⌋ ⌊na⇩3⌋"

    definition brakesystem⇩1 :: "𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m" where
      "brakesystem⇩1 ≡ mk⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m oid⇩B⇩S⇩0 ⌊st⇩B⇩S⇩0⌋ ⌊in⇩0⌋"
    definition brakesystem⇩2 :: "𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m" where
      "brakesystem⇩2 ≡ mk⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m oid⇩B⇩S⇩1 ⌊st⇩B⇩S⇩1⌋ ⌊in⇩1⌋"

    definition parameter⇩1 :: "𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r" where
      "parameter⇩1 ≡ mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid⇩S⇩P⇩0 ⌊id⇩S⇩P⇩0⌋ ⌊na⇩0⌋ ⌊de⇩0⌋ ⌊va⇩0⌋ ⌊un⇩0⌋"
    definition parameter⇩2 :: "𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r" where
      "parameter⇩2 ≡ mk⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid⇩S⇩P⇩1 ⌊id⇩S⇩P⇩1⌋ ⌊na⇩1⌋ ⌊de⇩1⌋ ⌊va⇩1⌋ ⌊un⇩1⌋"
    definition parameter⇩3 :: "𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r" where
      "parameter⇩3 ≡ mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid⇩N⇩P⇩0 ⌊id⇩N⇩P⇩0⌋ ⌊na⇩2⌋ ⌊de⇩2⌋ ⌊va⇩2⌋ ⌊un⇩2⌋"
    definition parameter⇩4 :: "𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r" where
      "parameter⇩4 ≡ mk⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r oid⇩N⇩P⇩1 ⌊id⇩N⇩P⇩1⌋ ⌊na⇩3⌋ ⌊de⇩3⌋ ⌊va⇩3⌋ ⌊un⇩3⌋"

    definition namespace⇩1 :: "𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e" where
      "namespace⇩1 ≡ mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e oid⇩N⇩S⇩0 ⌊id⇩N⇩S⇩0⌋ ⌊na⇩4⌋ ⌊de⇩4⌋"
    definition namespace⇩2 :: "𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e" where
      "namespace⇩2 ≡ mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e oid⇩N⇩S⇩1 ⌊id⇩N⇩S⇩1⌋ ⌊na⇩5⌋ ⌊de⇩5⌋"
    definition namespace⇩3 :: "𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e" where
      "namespace⇩3 ≡ mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e oid⇩N⇩S⇩2 ⌊id⇩N⇩S⇩2⌋ ⌊na⇩6⌋ ⌊de⇩6⌋"
    definition namespace⇩4 :: "𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e" where
      "namespace⇩4 ≡ mk⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e oid⇩N⇩S⇩3 ⌊id⇩N⇩S⇩3⌋ ⌊na⇩7⌋ ⌊de⇩7⌋"

    definition brakecomponents :: "𝒯⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t list" where
      "brakecomponents ≡ [brakecomponent⇩1, brakecomponent⇩2]"

    definition cad_models :: "𝒯⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l list" where
      "cad_models ≡ [cad_model⇩1, cad_model⇩2]"

    definition brakesystems :: "𝒯⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m list" where
      "brakesystems ≡ [brakesystem⇩1, brakesystem⇩2]"

    definition string_parameters :: "𝒯⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r list" where
      "string_parameters ≡ [parameter⇩1, parameter⇩2]"
    definition numeric_parameters :: "𝒯⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r list" where
      "numeric_parameters ≡ [parameter⇩3, parameter⇩4]"

    definition namespaces :: "𝒯⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e list" where
      "namespaces ≡ [namespace⇩1, namespace⇩2]"

    definition σ :: "𝔄 state" where
      "σ ≡ ⦇heap = Map.empty(oid⇩B⇩C⇩0 ↦ in⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t brakecomponent⇩1,
                             oid⇩B⇩C⇩1 ↦ in⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t brakecomponent⇩2,
                             oid⇩B⇩S⇩0 ↦ in⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m brakesystem⇩1,
                             oid⇩B⇩S⇩1 ↦ in⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m brakesystem⇩2,
                             oid⇩S⇩P⇩0 ↦ in⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r parameter⇩1,
                             oid⇩S⇩P⇩1 ↦ in⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r parameter⇩2,
                             oid⇩N⇩P⇩0 ↦ in⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r parameter⇩3,
                             oid⇩N⇩P⇩1 ↦ in⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r parameter⇩4,
                             oid⇩N⇩S⇩0 ↦ in⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e namespace⇩1,
                             oid⇩N⇩S⇩1 ↦ in⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e namespace⇩2,
                             oid⇩C⇩M⇩0 ↦ in⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l cad_model⇩1,
                             oid⇩C⇩M⇩1 ↦ in⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l cad_model⇩2),
            assocs = Map.empty(oid⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e𝒫𝒜ℛ𝒜ℳℰ𝒯ℰℛ𝒮 ↦
                                  [[[oid⇩N⇩S⇩0],[oid⇩S⇩P⇩0]],[[oid⇩N⇩S⇩1],[oid⇩S⇩P⇩1]]],
                               oid⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l𝒩𝒜ℳℰ𝒮𝒫𝒜𝒞ℰ𝒮 ↦
                                  [[[oid⇩C⇩M⇩0],[oid⇩N⇩S⇩0]],[[oid⇩C⇩M⇩1],[oid⇩N⇩S⇩1]]],
                               oid⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩mℬℛ𝒜𝒦ℰ𝒞𝒪ℳ𝒫𝒪𝒩ℰ𝒩𝒯𝒮 ↦
                                  [[[oid⇩B⇩S⇩0],[oid⇩B⇩C⇩0]],[[oid⇩B⇩S⇩1],[oid⇩B⇩C⇩1]]])⦈"

    abbreviation "τ ≡ (σ, σ)"

    text ‹
      There is already an equivalent definition of ‹τ⇩0 ≡ (σ⇩0, σ⇩0)› in
      \<^theory>‹Featherweight_OCL.UML_State›.
    ›
    lemma τ⇩0_equiv: "τ⇩0 ≡ (σ⇩0, σ⇩0)"
      unfolding σ⇩0_def τ⇩0_def
      by argo

    lemma refl⇩0_τ_wff: "WFF τ⇩0"
      by(auto simp: WFF_def τ⇩0_equiv τ⇩0_def)
    lemma refl_τ_wff: "WFF τ"
      by(auto simp: WFF_def σ_def oid⇩B⇩C⇩0_def oid⇩B⇩C⇩1_def oid⇩B⇩S⇩0_def oid⇩B⇩S⇩1_def
                    oid⇩S⇩P⇩0_def oid⇩S⇩P⇩1_def oid⇩N⇩P⇩0_def oid⇩N⇩P⇩1_def oid⇩N⇩S⇩0_def oid⇩N⇩S⇩1_def
                    oid⇩C⇩M⇩0_def oid⇩C⇩M⇩1_def oid⇩𝔄 brakecomponent⇩1_def brakecomponent⇩2_def
                    cad_model⇩1_def cad_model⇩2_def brakesystem⇩1_def brakesystem⇩2_def
                    parameter⇩1_def parameter⇩2_def parameter⇩3_def parameter⇩4_def
                    namespace⇩1_def namespace⇩2_def)
    lemma basic_τ_wff: "WFF (σ⇩0, σ)"
      by(auto simp: WFF_def σ⇩0_def σ_def oid⇩B⇩C⇩0_def oid⇩B⇩C⇩1_def oid⇩B⇩S⇩0_def oid⇩B⇩S⇩1_def
                    oid⇩S⇩P⇩0_def oid⇩S⇩P⇩1_def oid⇩N⇩P⇩0_def oid⇩N⇩P⇩1_def oid⇩N⇩S⇩0_def oid⇩N⇩S⇩1_def
                    oid⇩C⇩M⇩0_def oid⇩C⇩M⇩1_def oid⇩𝔄 brakecomponent⇩1_def brakecomponent⇩2_def
                    cad_model⇩1_def cad_model⇩2_def brakesystem⇩1_def brakesystem⇩2_def
                    parameter⇩1_def parameter⇩2_def parameter⇩3_def parameter⇩4_def
                    namespace⇩1_def namespace⇩2_def)

    lemma[simp, code_unfold]: "dom (heap σ) = {oid⇩B⇩C⇩0, oid⇩B⇩C⇩1, oid⇩B⇩S⇩0, oid⇩B⇩S⇩1,
                                                oid⇩S⇩P⇩0, oid⇩S⇩P⇩1, oid⇩N⇩P⇩0, oid⇩N⇩P⇩1,
                                                oid⇩N⇩S⇩0, oid⇩N⇩S⇩1, oid⇩C⇩M⇩0, oid⇩C⇩M⇩1}"
      unfolding σ_def
      by auto
    lemma[simp, code_unfold]: "dom (heap σ⇩0) = {}"
      unfolding σ⇩0_def
      by auto

    lemma[code_unfold]: "ran (heap σ) = {
      in⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t brakecomponent⇩1, in⇩B⇩r⇩a⇩k⇩e⇩C⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t brakecomponent⇩2,
      in⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m brakesystem⇩1, in⇩B⇩r⇩a⇩k⇩e⇩S⇩y⇩s⇩t⇩e⇩m brakesystem⇩2,
      in⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r parameter⇩1, in⇩S⇩t⇩r⇩i⇩n⇩g⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r parameter⇩2,
      in⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r parameter⇩3, in⇩N⇩u⇩m⇩e⇩r⇩i⇩c⇩P⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r parameter⇩4,
      in⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e namespace⇩1, in⇩N⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e namespace⇩2,
      in⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l cad_model⇩1, in⇩C⇩A⇩D⇩_⇩M⇩o⇩d⇩e⇩l cad_model⇩2}"
      unfolding σ_def oid⇩B⇩C⇩0_def oid⇩B⇩C⇩1_def
                oid⇩B⇩S⇩0_def oid⇩B⇩S⇩1_def oid⇩S⇩P⇩0_def oid⇩S⇩P⇩1_def
                oid⇩N⇩P⇩0_def oid⇩N⇩P⇩1_def oid⇩N⇩S⇩0_def oid⇩N⇩S⇩1_def
                oid⇩C⇩M⇩0_def oid⇩C⇩M⇩1_def
      by (simp add: insert_commute)

    lemma[code_unfold]: "ran (heap σ⇩0) = {}"
      unfolding σ⇩0_def
      by simp

    subsection ‹Abbreviations for Constant OCL Values›

    definition x⇩b⇩r⇩a⇩k⇩e⇩c⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t⇩_⇩1 :: "BrakeComponent" where
      "x⇩b⇩r⇩a⇩k⇩e⇩c⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t⇩_⇩1 ≡ λ _. ⌊⌊brakecomponent⇩1⌋⌋"
    definition x⇩b⇩r⇩a⇩k⇩e⇩c⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t⇩_⇩2 :: "BrakeComponent" where
      "x⇩b⇩r⇩a⇩k⇩e⇩c⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t⇩_⇩2 ≡ λ _. ⌊⌊brakecomponent⇩2⌋⌋"

    lemmas[simp] = x⇩b⇩r⇩a⇩k⇩e⇩c⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t⇩_⇩1_def x⇩b⇩r⇩a⇩k⇩e⇩c⇩o⇩m⇩p⇩o⇩n⇩e⇩n⇩t⇩_⇩2_def

    definition x⇩b⇩r⇩a⇩k⇩e⇩s⇩y⇩s⇩t⇩e⇩m⇩_⇩1 :: "BrakeSystem" where
      "x⇩b⇩r⇩a⇩k⇩e⇩s⇩y⇩s⇩t⇩e⇩m⇩_⇩1 ≡ λ _. ⌊⌊brakesystem⇩1⌋⌋"
    definition x⇩b⇩r⇩a⇩k⇩e⇩s⇩y⇩s⇩t⇩e⇩m⇩_⇩2 :: "BrakeSystem" where
      "x⇩b⇩r⇩a⇩k⇩e⇩s⇩y⇩s⇩t⇩e⇩m⇩_⇩2 ≡ λ _. ⌊⌊brakesystem⇩2⌋⌋"

    lemmas[simp] = x⇩b⇩r⇩a⇩k⇩e⇩s⇩y⇩s⇩t⇩e⇩m⇩_⇩1_def x⇩b⇩r⇩a⇩k⇩e⇩s⇩y⇩s⇩t⇩e⇩m⇩_⇩2_def

    definition x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩1 :: "StringParameter" where
      "x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩1 ≡ λ _. ⌊⌊parameter⇩1⌋⌋"
    definition x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩2 :: "StringParameter" where
      "x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩2 ≡ λ _. ⌊⌊parameter⇩2⌋⌋"
    definition x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩3 :: "NumericParameter" where
      "x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩3 ≡ λ _. ⌊⌊parameter⇩3⌋⌋"
    definition x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩4 :: "NumericParameter" where
      "x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩4 ≡ λ _. ⌊⌊parameter⇩4⌋⌋"

    lemmas[simp] = x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩1_def x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩2_def x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩3_def x⇩p⇩a⇩r⇩a⇩m⇩e⇩t⇩e⇩r⇩_⇩4_def

    definition x⇩n⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e⇩_⇩1 :: "Namespace" where
      "x⇩n⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e⇩_⇩1 ≡ λ _. ⌊⌊namespace⇩1⌋⌋"
    definition x⇩n⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e⇩_⇩2 :: "Namespace" where
      "x⇩n⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e⇩_⇩2 ≡ λ _. ⌊⌊namespace⇩2⌋⌋"

    lemmas[simp] = x⇩n⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e⇩_⇩1_def x⇩n⇩a⇩m⇩e⇩s⇩p⇩a⇩c⇩e⇩_⇩2_def

    definition x⇩c⇩a⇩d⇩_⇩m⇩o⇩d⇩e⇩l⇩_⇩1 :: "CAD_Model" where
      "x⇩c⇩a⇩d⇩_⇩m⇩o⇩d⇩e⇩l⇩_⇩1 ≡ λ _. ⌊⌊cad_model⇩1⌋⌋"
    definition x⇩c⇩a⇩d⇩_⇩m⇩o⇩d⇩e⇩l⇩_⇩2 :: "CAD_Model" where
      "x⇩c⇩a⇩d⇩_⇩m⇩o⇩d⇩e⇩l⇩_⇩2 ≡ λ _. ⌊⌊cad_model⇩2⌋⌋"

    lemmas[simp] = x⇩c⇩a⇩d⇩_⇩m⇩o⇩d⇩e⇩l⇩_⇩1_def x⇩c⇩a⇩d⇩_⇩m⇩o⇩d⇩e⇩l⇩_⇩2_def

    end