D>r      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqTools for working with validity(c) Marek Suchnek, 2017MITSafe3Type showing validity of some contruct (similar to r) Check if  signals valid or invalidConvert  to r with message3Construct constraint with boolean value and messageConceptual model metamodel(c) Marek Suchnek, 2017MITSafe!"0 = representation in meta level 2 representation in meta level . representation in meta level 8 representation in meta level*Participation representation in meta level!&Attribute representation in meta level&)Type of participation (i.e. multiplicity)'&Type for mandatory relationship (1..N)(%Type for optional relationship (0..N))#Type for custom relationship (X..Y)*Quantity of participation type+#Quantity limited by positive number,"Unlimited quantity (i.e. infinity)-.Special unique (i.e. always must be exactly 1).,Relationship that connects multiple entities/*Get all participations in the relationship0$Name of relationship type (default: D)1 Convert to   with use of 0 and /2"Entities for representing concepts3 Get all attributes of the entity4Name of entity type (default: D)5"Name of supertypes (default: '[]')6!Names of subtypes (default: '[]')7 Convert to   with use of 4, 3 and others8Whole conceptual model class9Get all elements of the model:ACheck whether all elements in model are valid and is valid itself;Name of model type (default: D)< Convert to   with use of ; and 9=#Generic element of conceptual model>5List of simple contraints (no need to know its model)?(List of complex (model-aware) contraints@2List of all contraints (default: simple + complex)A(Evaluate all contraints and get list of  as resultB4Check if element is valid (conforms all constraints)C<Get list of all constraints violations (empty list if valid)D,Name of element type (default is derived by s)EConvert element to  - (recommended: use functions from subclasses)F,Optional function from converting back from  G*Class encapsulating the identity principleH)Get identifier of element (default: show)I!Check if two elements are identicJType synonym for identifier useKGet element name from any  LGet identifier from any  M Check if any   is validNConvert tuple to !OConvert tuple to J  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRG   !"#$%&'()*-+,./0123456789:;<=B>?@ACDEFGHIJKLMNOJJGHI=>?@ABCDEF89:;<234567./01*+,-&'()!"#$% KLMNORQP   !"#$%&'()*+,-./0123456789:;<= >?@ABCDEFGHIJKLMNOPQR*Helper constructs for conceptual modelling(c) Marek Suchnek, 2017MITSafecConvert * to simple string representationdConvert & to simple string representatione'Find value of attribute with given namef.Find identifier of participant with given namecdefcdefcdefcdef.Conceptual model simple visulization functions(c) Marek Suchnek, 2017MITSafe!" g1Helper function for converting new lines to HTML.hConvert  2 to DOT code fragment for the model visualization.i Filtering  MetaElements9 by type names, i.e. every entity type will be just once.j8Convert element in model to DOT for model visualization.k3Convert whole model to DOT for model visualization.lConvert  5 to DOT code fragment for the instance visualization.m,Create DOT identifier based on given string.n1Create showable identifier based on given string.o Filtering  MetaElements6 by identifier, i.e. every instance will be just once.p;Convert element in model to DOT for instance visualization.q6Convert whole model to DOT for instance visualization. ghijklmnopq ghijklmnopq ghijklmnopq ghijklmnopqt       !"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwuxyz"hCM-0.1.0.0-1Ig4u1AZCcpDoAR9uE2miP CM.Validity CM.Metamodel CM.HelpersCM.VisualizationValidityValidInvalidisValidviolationMessage newConstraint$fShowValidity$fReadValidity $fEqValidity MetaElement MetaEntityMetaRelationship MetaModelmeName meIdentifier meAttributesmeValid meSuperNames meSubNamesmrName mrIdentifiermrParticipationsmrValidmmName mmIdentifier mmElementsmmValidMetaParticipationmpNamempType mpIdentifiermpPType MetaAttributemaNamemaTypemaValueParticipationType MandatoryOptionalCustomParticipationQuantityLimited UnlimitedUnique RelationshiprelationshipParticipationsrelationshipNametoMetaRelationshipEntityentityAttributes entityNameentitySuperNamesentitySubNames toMetaEntityConceptualModelcmodelElements validModel cmodelName toMetaModel CMElementsimpleConstraintscomplexConstaints constraintsevalConstraintsvalid violations elementNametoMetafromMeta Identifiable identifieridentic IdentifiermetaElementNamemetaElementIdentifiermetaElementValidtupleToAttributetupleToParticipation$fEntityMetaElement$fIdentifiableMetaElement$fCMElementMetaElement$fShowParticipationQuantity$fReadParticipationQuantity$fEqParticipationQuantity$fOrdParticipationQuantity$fShowParticipationType$fReadParticipationType$fEqParticipationType$fShowMetaAttribute$fReadMetaAttribute$fEqMetaAttribute$fShowMetaParticipation$fReadMetaParticipation$fEqMetaParticipation$fShowMetaElement$fReadMetaElement$fEqMetaElement pquantShow ptypeShowfindAttributeValuefindParticipantIdnl2brmetaElementToDotModelfilterEntitiesTypeelementToDotModelmodelToDotModelmetaElementToDotInstance makeDotId makeDisplayIdfilterEntitiesInstanceelementToDotInstancemodelToDotInstancebaseGHC.BaseMaybeGHC.Showshow