sysml-validate 0.11.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/LICENSE +27 -27
  2. package/README.md +200 -200
  3. package/out/main.js +596 -141
  4. package/out/main.js.map +4 -4
  5. package/package.json +57 -57
  6. package/resources/sysml.dimension-table.json +1 -1
  7. package/resources/sysml.library/Domain Libraries/Analysis/.meta.json +9 -9
  8. package/resources/sysml.library/Domain Libraries/Analysis/.project.json +26 -26
  9. package/resources/sysml.library/Domain Libraries/Analysis/AnalysisTooling.sysml +33 -33
  10. package/resources/sysml.library/Domain Libraries/Analysis/SampledFunctions.sysml +118 -118
  11. package/resources/sysml.library/Domain Libraries/Analysis/StateSpaceRepresentation.sysml +143 -143
  12. package/resources/sysml.library/Domain Libraries/Analysis/TradeStudies.sysml +170 -170
  13. package/resources/sysml.library/Domain Libraries/Cause and Effect/.meta.json +7 -7
  14. package/resources/sysml.library/Domain Libraries/Cause and Effect/.project.json +22 -22
  15. package/resources/sysml.library/Domain Libraries/Cause and Effect/CausationConnections.sysml +82 -82
  16. package/resources/sysml.library/Domain Libraries/Cause and Effect/CauseAndEffect.sysml +81 -81
  17. package/resources/sysml.library/Domain Libraries/Geometry/.meta.json +7 -7
  18. package/resources/sysml.library/Domain Libraries/Geometry/.project.json +26 -26
  19. package/resources/sysml.library/Domain Libraries/Geometry/ShapeItems.sysml +898 -898
  20. package/resources/sysml.library/Domain Libraries/Geometry/SpatialItems.sysml +167 -167
  21. package/resources/sysml.library/Domain Libraries/Metadata/.meta.json +9 -9
  22. package/resources/sysml.library/Domain Libraries/Metadata/.project.json +18 -18
  23. package/resources/sysml.library/Domain Libraries/Metadata/ImageMetadata.sysml +77 -77
  24. package/resources/sysml.library/Domain Libraries/Metadata/ModelingMetadata.sysml +142 -142
  25. package/resources/sysml.library/Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml +38 -38
  26. package/resources/sysml.library/Domain Libraries/Metadata/RiskMetadata.sysml +99 -99
  27. package/resources/sysml.library/Domain Libraries/Quantities and Units/.meta.json +28 -28
  28. package/resources/sysml.library/Domain Libraries/Quantities and Units/.project.json +22 -22
  29. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQ.sysml +42 -42
  30. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAcoustics.sysml +439 -439
  31. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAtomicNuclear.sysml +2726 -2726
  32. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQBase.sysml +206 -206
  33. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -1991
  34. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQChemistryMolecular.sysml +1353 -1353
  35. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCondensedMatter.sysml +1223 -1223
  36. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQElectromagnetism.sysml +2333 -2333
  37. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQInformation.sysml +958 -958
  38. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQLight.sysml +1537 -1537
  39. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQMechanics.sysml +1564 -1564
  40. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQSpaceTime.sysml +1169 -1169
  41. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQThermodynamics.sysml +1256 -1256
  42. package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementRefCalculations.sysml +30 -30
  43. package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementReferences.sysml +526 -526
  44. package/resources/sysml.library/Domain Libraries/Quantities and Units/Quantities.sysml +107 -107
  45. package/resources/sysml.library/Domain Libraries/Quantities and Units/QuantityCalculations.sysml +70 -70
  46. package/resources/sysml.library/Domain Libraries/Quantities and Units/SI.sysml +378 -378
  47. package/resources/sysml.library/Domain Libraries/Quantities and Units/SIPrefixes.sysml +48 -48
  48. package/resources/sysml.library/Domain Libraries/Quantities and Units/TensorCalculations.sysml +49 -49
  49. package/resources/sysml.library/Domain Libraries/Quantities and Units/Time.sysml +274 -274
  50. package/resources/sysml.library/Domain Libraries/Quantities and Units/USCustomaryUnits.sysml +260 -260
  51. package/resources/sysml.library/Domain Libraries/Quantities and Units/VectorCalculations.sysml +62 -62
  52. package/resources/sysml.library/Domain Libraries/Requirement Derivation/.meta.json +7 -7
  53. package/resources/sysml.library/Domain Libraries/Requirement Derivation/.project.json +18 -18
  54. package/resources/sysml.library/Domain Libraries/Requirement Derivation/DerivationConnections.sysml +62 -62
  55. package/resources/sysml.library/Domain Libraries/Requirement Derivation/RequirementDerivation.sysml +38 -38
  56. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.meta.json +8 -8
  57. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.project.json +10 -10
  58. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/Collections.kerml +176 -176
  59. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/ScalarValues.kerml +23 -23
  60. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/VectorValues.kerml +63 -63
  61. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.meta.json +22 -22
  62. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.project.json +14 -14
  63. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BaseFunctions.kerml +79 -79
  64. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BooleanFunctions.kerml +22 -22
  65. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/CollectionFunctions.kerml +68 -68
  66. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ComplexFunctions.kerml +47 -47
  67. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ControlFunctions.kerml +116 -116
  68. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml +42 -42
  69. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml +43 -43
  70. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml +27 -27
  71. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml +42 -42
  72. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml +153 -153
  73. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml +49 -49
  74. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml +56 -56
  75. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml +32 -32
  76. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml +110 -110
  77. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml +25 -25
  78. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml +34 -34
  79. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/VectorFunctions.kerml +272 -272
  80. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.meta.json +21 -21
  81. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.project.json +14 -14
  82. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Base.kerml +94 -94
  83. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Clocks.kerml +155 -155
  84. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/ControlPerformances.kerml +134 -134
  85. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/FeatureReferencingPerformances.kerml +189 -189
  86. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/KerML.kerml +483 -483
  87. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Links.kerml +66 -66
  88. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Metaobjects.kerml +57 -57
  89. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Objects.kerml +212 -212
  90. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Observation.kerml +160 -160
  91. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml +992 -992
  92. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Performances.kerml +292 -292
  93. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml +196 -196
  94. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml +144 -144
  95. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Transfers.kerml +280 -280
  96. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/TransitionPerformances.kerml +65 -65
  97. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Triggers.kerml +187 -187
  98. package/resources/sysml.library/LICENSE +276 -276
  99. package/resources/sysml.library/NOTICE.md +20 -20
  100. package/resources/sysml.library/Systems Library/Actions.sysml +556 -556
  101. package/resources/sysml.library/Systems Library/Allocations.sysml +28 -28
  102. package/resources/sysml.library/Systems Library/AnalysisCases.sysml +37 -37
  103. package/resources/sysml.library/Systems Library/Attributes.sysml +24 -24
  104. package/resources/sysml.library/Systems Library/Calculations.sysml +36 -36
  105. package/resources/sysml.library/Systems Library/Cases.sysml +70 -70
  106. package/resources/sysml.library/Systems Library/Connections.sysml +59 -59
  107. package/resources/sysml.library/Systems Library/Constraints.sysml +43 -43
  108. package/resources/sysml.library/Systems Library/Flows.sysml +125 -125
  109. package/resources/sysml.library/Systems Library/Interfaces.sysml +88 -88
  110. package/resources/sysml.library/Systems Library/Items.sysml +152 -152
  111. package/resources/sysml.library/Systems Library/Metadata.sysml +31 -31
  112. package/resources/sysml.library/Systems Library/Parts.sysml +80 -80
  113. package/resources/sysml.library/Systems Library/Ports.sysml +53 -53
  114. package/resources/sysml.library/Systems Library/Requirements.sysml +193 -193
  115. package/resources/sysml.library/Systems Library/StandardViewDefinitions.sysml +123 -123
  116. package/resources/sysml.library/Systems Library/States.sysml +102 -102
  117. package/resources/sysml.library/Systems Library/SysML.sysml +539 -539
  118. package/resources/sysml.library/Systems Library/UseCases.sysml +56 -56
  119. package/resources/sysml.library/Systems Library/VerificationCases.sysml +102 -102
  120. package/resources/sysml.library/Systems Library/Views.sysml +163 -163
  121. package/resources/sysml.library.index.json +1 -1
@@ -1,43 +1,43 @@
1
- standard library package DataFunctions {
2
- doc
3
- /*
4
- * This package defines the abstract base functions corresponding to all the unary and binary operators
5
- * in the KerML expression notation that might be defined on various kinds of DataValues.
6
- */
7
-
8
- private import Base::DataValue;
9
- private import ScalarValues::Boolean;
10
- private import ControlFunctions::reduce;
11
-
12
- abstract function '==' specializes BaseFunctions::'==' { in x: DataValue[0..1]; in y: DataValue[0..1];
13
- return : Boolean[1];
14
- }
15
- function '===' specializes BaseFunctions::'==='{ in x: DataValue[0..1]; in y: DataValue[0..1];
16
- return : Boolean[1] = x == y;
17
- }
18
-
19
- abstract function '+' { in x: DataValue[1]; in y: DataValue[0..1]; return : DataValue[1]; }
20
- abstract function '-' { in x: DataValue[1]; in y: DataValue[0..1]; return : DataValue[1]; }
21
- abstract function '*' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
22
- abstract function '/' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
23
- abstract function '**' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
24
- abstract function '^' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
25
- abstract function '%' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
26
-
27
- abstract function 'not' { in x: DataValue[1]; return : DataValue[1]; }
28
- abstract function 'xor' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
29
-
30
- abstract function '~' { in x: DataValue[1]; return : DataValue[1]; }
31
- abstract function '|' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
32
- abstract function '&' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
33
-
34
- abstract function '<' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
35
- abstract function '>' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
36
- abstract function '<=' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
37
- abstract function '>=' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
38
-
39
- abstract function max { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
40
- abstract function min { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
41
-
42
- abstract function '..' { in lower: DataValue[1]; in upper: DataValue[1]; return : DataValue[0..*] ordered; }
1
+ standard library package DataFunctions {
2
+ doc
3
+ /*
4
+ * This package defines the abstract base functions corresponding to all the unary and binary operators
5
+ * in the KerML expression notation that might be defined on various kinds of DataValues.
6
+ */
7
+
8
+ private import Base::DataValue;
9
+ private import ScalarValues::Boolean;
10
+ private import ControlFunctions::reduce;
11
+
12
+ abstract function '==' specializes BaseFunctions::'==' { in x: DataValue[0..1]; in y: DataValue[0..1];
13
+ return : Boolean[1];
14
+ }
15
+ function '===' specializes BaseFunctions::'==='{ in x: DataValue[0..1]; in y: DataValue[0..1];
16
+ return : Boolean[1] = x == y;
17
+ }
18
+
19
+ abstract function '+' { in x: DataValue[1]; in y: DataValue[0..1]; return : DataValue[1]; }
20
+ abstract function '-' { in x: DataValue[1]; in y: DataValue[0..1]; return : DataValue[1]; }
21
+ abstract function '*' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
22
+ abstract function '/' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
23
+ abstract function '**' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
24
+ abstract function '^' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
25
+ abstract function '%' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
26
+
27
+ abstract function 'not' { in x: DataValue[1]; return : DataValue[1]; }
28
+ abstract function 'xor' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
29
+
30
+ abstract function '~' { in x: DataValue[1]; return : DataValue[1]; }
31
+ abstract function '|' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
32
+ abstract function '&' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
33
+
34
+ abstract function '<' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
35
+ abstract function '>' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
36
+ abstract function '<=' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
37
+ abstract function '>=' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
38
+
39
+ abstract function max { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
40
+ abstract function min { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
41
+
42
+ abstract function '..' { in lower: DataValue[1]; in upper: DataValue[1]; return : DataValue[0..*] ordered; }
43
43
  }
@@ -1,43 +1,43 @@
1
- standard library package IntegerFunctions {
2
- doc
3
- /*
4
- * This package defines functions on Integer values, including concrete specializations of the
5
- * general arithmetic and comparison operations.
6
- */
7
-
8
- public import ScalarValues::*;
9
-
10
- function abs specializes RationalFunctions::abs { in x: Integer[1]; return : Natural[1]; }
11
-
12
- function '+' specializes RationalFunctions::'+' { in x: Integer[1]; in y: Integer[0..1]; return : Integer[1]; }
13
- function '-' specializes RationalFunctions::'-' { in x: Integer[1]; in y: Integer[0..1]; return : Integer[1]; }
14
- function '*' specializes RationalFunctions::'*' { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
15
- function '/' specializes RationalFunctions::'/' { in x: Integer[1]; in y: Integer[1]; return : Rational[1]; }
16
- function '**' specializes RationalFunctions::'**' { in x: Integer[1]; in y: Natural[1]; return : Integer[1]; }
17
- function '^' specializes RationalFunctions::'^' { in x: Integer[1]; in y: Natural[1]; return : Integer[1]; }
18
- function '%' specializes NumericalFunctions::'%' { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
19
-
20
- function '<' specializes RationalFunctions::'<' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
21
- function '>' specializes RationalFunctions::'>' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
22
- function '<=' specializes RationalFunctions::'<=' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
23
- function '>=' specializes RationalFunctions::'>=' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
24
-
25
- function max specializes RationalFunctions::max { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
26
- function min specializes RationalFunctions::min { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
27
-
28
- function '==' specializes DataFunctions::'==' { in x: Integer[0..1]; in y: Integer[0..1]; return : Boolean[1]; }
29
-
30
- function '..' specializes ScalarFunctions::'..' { in lower: Integer[1]; in upper: Integer[1]; return : Integer[0..*]; }
31
-
32
- function ToString specializes RationalFunctions::ToString { in x: Integer[1]; return : String[1]; }
33
- function ToNatural { in x: Integer[1]; return : Natural[1]; }
34
- function ToInteger { in x: String[1]; return : Integer[1]; }
35
-
36
- function sum specializes RationalFunctions::sum { in collection: Integer[0..*];
37
- return : Integer[1] default NumericalFunctions::sum0(collection, 0);
38
- }
39
-
40
- function product specializes RationalFunctions::product { in collection: Integer[0..*];
41
- return : Integer[1] default NumericalFunctions::product1(collection, 1);
42
- }
43
- }
1
+ standard library package IntegerFunctions {
2
+ doc
3
+ /*
4
+ * This package defines functions on Integer values, including concrete specializations of the
5
+ * general arithmetic and comparison operations.
6
+ */
7
+
8
+ public import ScalarValues::*;
9
+
10
+ function abs specializes RationalFunctions::abs { in x: Integer[1]; return : Natural[1]; }
11
+
12
+ function '+' specializes RationalFunctions::'+' { in x: Integer[1]; in y: Integer[0..1]; return : Integer[1]; }
13
+ function '-' specializes RationalFunctions::'-' { in x: Integer[1]; in y: Integer[0..1]; return : Integer[1]; }
14
+ function '*' specializes RationalFunctions::'*' { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
15
+ function '/' specializes RationalFunctions::'/' { in x: Integer[1]; in y: Integer[1]; return : Rational[1]; }
16
+ function '**' specializes RationalFunctions::'**' { in x: Integer[1]; in y: Natural[1]; return : Integer[1]; }
17
+ function '^' specializes RationalFunctions::'^' { in x: Integer[1]; in y: Natural[1]; return : Integer[1]; }
18
+ function '%' specializes NumericalFunctions::'%' { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
19
+
20
+ function '<' specializes RationalFunctions::'<' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
21
+ function '>' specializes RationalFunctions::'>' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
22
+ function '<=' specializes RationalFunctions::'<=' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
23
+ function '>=' specializes RationalFunctions::'>=' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
24
+
25
+ function max specializes RationalFunctions::max { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
26
+ function min specializes RationalFunctions::min { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
27
+
28
+ function '==' specializes DataFunctions::'==' { in x: Integer[0..1]; in y: Integer[0..1]; return : Boolean[1]; }
29
+
30
+ function '..' specializes ScalarFunctions::'..' { in lower: Integer[1]; in upper: Integer[1]; return : Integer[0..*]; }
31
+
32
+ function ToString specializes RationalFunctions::ToString { in x: Integer[1]; return : String[1]; }
33
+ function ToNatural { in x: Integer[1]; return : Natural[1]; }
34
+ function ToInteger { in x: String[1]; return : Integer[1]; }
35
+
36
+ function sum specializes RationalFunctions::sum { in collection: Integer[0..*];
37
+ return : Integer[1] default NumericalFunctions::sum0(collection, 0);
38
+ }
39
+
40
+ function product specializes RationalFunctions::product { in collection: Integer[0..*];
41
+ return : Integer[1] default NumericalFunctions::product1(collection, 1);
42
+ }
43
+ }
@@ -1,27 +1,27 @@
1
- standard library package NaturalFunctions {
2
- doc
3
- /*
4
- * This package defines functions on Natural values, including concrete specialization of the
5
- * general arithmetic and comparison operations.
6
- */
7
-
8
- public import ScalarValues::*;
9
-
10
- function '+' specializes IntegerFunctions::'+' { in x: Natural[1]; in y: Natural[0..1]; return : Natural[1]; }
11
- function '*' specializes IntegerFunctions::'*' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
12
- function '/' specializes IntegerFunctions::'/' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
13
- function '%' specializes IntegerFunctions::'%' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
14
-
15
- function '<' specializes IntegerFunctions::'<' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
16
- function '>' specializes IntegerFunctions::'>' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
17
- function '<=' specializes IntegerFunctions::'<=' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
18
- function '>=' specializes IntegerFunctions::'>=' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
19
-
20
- function max specializes IntegerFunctions::max { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
21
- function min specializes IntegerFunctions::min { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
22
-
23
- function '==' specializes IntegerFunctions::'==' { in x: Natural[0..1]; in y: Natural[0..1]; return : Boolean[1]; }
24
-
25
- function ToString specializes IntegerFunctions::ToString { in x: Natural[1]; return : String[1]; }
26
- function ToNatural{ in x: String[1]; return : Natural[1]; }
27
- }
1
+ standard library package NaturalFunctions {
2
+ doc
3
+ /*
4
+ * This package defines functions on Natural values, including concrete specialization of the
5
+ * general arithmetic and comparison operations.
6
+ */
7
+
8
+ public import ScalarValues::*;
9
+
10
+ function '+' specializes IntegerFunctions::'+' { in x: Natural[1]; in y: Natural[0..1]; return : Natural[1]; }
11
+ function '*' specializes IntegerFunctions::'*' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
12
+ function '/' specializes IntegerFunctions::'/' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
13
+ function '%' specializes IntegerFunctions::'%' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
14
+
15
+ function '<' specializes IntegerFunctions::'<' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
16
+ function '>' specializes IntegerFunctions::'>' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
17
+ function '<=' specializes IntegerFunctions::'<=' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
18
+ function '>=' specializes IntegerFunctions::'>=' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
19
+
20
+ function max specializes IntegerFunctions::max { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
21
+ function min specializes IntegerFunctions::min { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
22
+
23
+ function '==' specializes IntegerFunctions::'==' { in x: Natural[0..1]; in y: Natural[0..1]; return : Boolean[1]; }
24
+
25
+ function ToString specializes IntegerFunctions::ToString { in x: Natural[1]; return : String[1]; }
26
+ function ToNatural{ in x: String[1]; return : Natural[1]; }
27
+ }
@@ -1,43 +1,43 @@
1
- standard library package NumericalFunctions {
2
- doc
3
- /*
4
- * This package defines abstract functions on Numerical values for general arithmetic and comparison operations.
5
- */
6
-
7
- public import ScalarValues::*;
8
- private import ControlFunctions::reduce;
9
-
10
- abstract function isZero{ in x: NumericalValue[1]; return : Boolean; }
11
- abstract function isUnit{ in x : NumericalValue[1]; return : Boolean; }
12
-
13
- abstract function abs{ in x: NumericalValue[1]; return : NumericalValue[1]; }
14
-
15
- abstract function '+' specializes ScalarFunctions::'+' { in x: NumericalValue[1]; in y: NumericalValue[0..1]; return : NumericalValue[1]; }
16
- abstract function '-' specializes ScalarFunctions::'-' { in x: NumericalValue[1]; in y: NumericalValue[0..1]; return : NumericalValue[1]; }
17
- abstract function '*' specializes ScalarFunctions::'*' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
18
- abstract function '/' specializes ScalarFunctions::'/' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
19
- abstract function '**' specializes ScalarFunctions::'**' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
20
- abstract function '^' specializes ScalarFunctions::'^' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
21
- abstract function '%' specializes ScalarFunctions::'%' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
22
-
23
- abstract function '<' specializes ScalarFunctions::'<' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
24
- abstract function '>' specializes ScalarFunctions::'>' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
25
- abstract function '<=' specializes ScalarFunctions::'<=' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
26
- abstract function '>=' specializes ScalarFunctions::'>=' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
27
-
28
- abstract function max specializes ScalarFunctions::max { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
29
- abstract function min specializes ScalarFunctions::min { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
30
-
31
- abstract function sum { in collection: ScalarValue[0..*]; return : ScalarValue[1]; }
32
- abstract function product { in collection: ScalarValue[0..*]; return : ScalarValue[1]; }
33
-
34
- function sum0 { in collection: NumericalValue[0..*]; in zero: ScalarValue[1];
35
- inv { isZero(zero) }
36
- return : ScalarValue = collection->reduce '+' ?? zero;
37
- }
38
-
39
- function product1 { in collection: ScalarValue[0..*]; in one: ScalarValue[1];
40
- inv { isUnit(one) }
41
- return : ScalarValue = collection->reduce '*' ?? one;
42
- }
1
+ standard library package NumericalFunctions {
2
+ doc
3
+ /*
4
+ * This package defines abstract functions on Numerical values for general arithmetic and comparison operations.
5
+ */
6
+
7
+ public import ScalarValues::*;
8
+ private import ControlFunctions::reduce;
9
+
10
+ abstract function isZero{ in x: NumericalValue[1]; return : Boolean; }
11
+ abstract function isUnit{ in x : NumericalValue[1]; return : Boolean; }
12
+
13
+ abstract function abs{ in x: NumericalValue[1]; return : NumericalValue[1]; }
14
+
15
+ abstract function '+' specializes ScalarFunctions::'+' { in x: NumericalValue[1]; in y: NumericalValue[0..1]; return : NumericalValue[1]; }
16
+ abstract function '-' specializes ScalarFunctions::'-' { in x: NumericalValue[1]; in y: NumericalValue[0..1]; return : NumericalValue[1]; }
17
+ abstract function '*' specializes ScalarFunctions::'*' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
18
+ abstract function '/' specializes ScalarFunctions::'/' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
19
+ abstract function '**' specializes ScalarFunctions::'**' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
20
+ abstract function '^' specializes ScalarFunctions::'^' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
21
+ abstract function '%' specializes ScalarFunctions::'%' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
22
+
23
+ abstract function '<' specializes ScalarFunctions::'<' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
24
+ abstract function '>' specializes ScalarFunctions::'>' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
25
+ abstract function '<=' specializes ScalarFunctions::'<=' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
26
+ abstract function '>=' specializes ScalarFunctions::'>=' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
27
+
28
+ abstract function max specializes ScalarFunctions::max { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
29
+ abstract function min specializes ScalarFunctions::min { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
30
+
31
+ abstract function sum { in collection: ScalarValue[0..*]; return : ScalarValue[1]; }
32
+ abstract function product { in collection: ScalarValue[0..*]; return : ScalarValue[1]; }
33
+
34
+ function sum0 { in collection: NumericalValue[0..*]; in zero: ScalarValue[1];
35
+ inv { isZero(zero) }
36
+ return : ScalarValue = collection->reduce '+' ?? zero;
37
+ }
38
+
39
+ function product1 { in collection: ScalarValue[0..*]; in one: ScalarValue[1];
40
+ inv { isUnit(one) }
41
+ return : ScalarValue = collection->reduce '*' ?? one;
42
+ }
43
43
  }
@@ -1,154 +1,154 @@
1
- standard library package OccurrenceFunctions {
2
- doc
3
- /*
4
- * This package defines utility functions that operate on occurrences, primarily related to
5
- * time during which those occurrences exist.
6
- */
7
-
8
- private import Occurrences::Occurrence;
9
- private import Occurrences::HappensDuring;
10
- private import ScalarValues::Boolean;
11
- private import ScalarValues::Positive;
12
- private import SequenceFunctions::notEmpty;
13
- private import SequenceFunctions::size;
14
- private import SequenceFunctions::add;
15
- private import SequenceFunctions::addAt;
16
- private import SequenceFunctions::remove;
17
- private import SequenceFunctions::removeAt;
18
- private import ControlFunctions::forAll;
19
-
20
- function '===' specializes BaseFunctions::'===' {
21
- doc
22
- /*
23
- * Test whether two occurrences are portions of the same life. That is, whether they
24
- * represent different portions of the same entity (colloquially, whether they have
25
- * the same "identity").
26
- */
27
-
28
- in x: Occurrence[0..1];
29
- in y: Occurrence[0..1];
30
-
31
- return : Boolean[1] = x.portionOfLife == y.portionOfLife;
32
- }
33
-
34
- function isDuring {
35
- doc
36
- /*
37
- * Test whether a performance of this function happens during the input occurrence.
38
- */
39
-
40
- in occ: Occurrence[1];
41
-
42
- private connector all during: HappensDuring[0..1] from self to occ;
43
-
44
- return : Boolean[1] = notEmpty(during);
45
- }
46
-
47
- function create {
48
- doc
49
- /*
50
- * Ensure that the start of a given occurrence happens during a performance of this
51
- * function. The occurrence is also returned from the function.
52
- */
53
-
54
- inout occ: Occurrence[1];
55
-
56
- private connector : HappensDuring from occ.startShot to self;
57
-
58
- return : Occurrence[1] = occ;
59
- }
60
-
61
- function destroy {
62
- doc
63
- /*
64
- * Ensure that the end of a given occurrence happens during a performance of this
65
- * function. The occurrence is also returned from the function.
66
- */
67
-
68
- inout occ: Occurrence[0..1];
69
-
70
- private connector : HappensDuring from [0..1] occ.endShot to self;
71
-
72
- return : Occurrence[0..1] = occ;
73
- }
74
-
75
- function addNew {
76
- doc
77
- /*
78
- * Add a newly created occurrence to the given group of occurrences and return the
79
- * new occurrence.
80
- */
81
-
82
- inout group: Occurrence[0..*] nonunique;
83
- inout occ: Occurrence[1];
84
-
85
- private composite step : add {
86
- inout seq1 = group;
87
- in seq2 = create(occ);
88
- }
89
-
90
- return : Occurrence[1] = occ;
91
- }
92
-
93
- function addNewAt {
94
- doc
95
- /*
96
- * Add a newly created occurrence to the given ordered group of occurrences at the given
97
- * index and return the new occurrence.
98
- */
99
-
100
- inout group: Occurrence[0..*] ordered nonunique;
101
- inout occ: Occurrence[1];
102
- in index: Positive[1];
103
-
104
- private composite step : addAt {
105
- inout seq = group;
106
- in values = create(occ);
107
- in startIndex = index;
108
- }
109
-
110
- return : Occurrence[1] = occ;
111
- }
112
-
113
- behavior removeOld {
114
- doc
115
- /*
116
- * Remove a given occurrence from a group of occurrences and destroy it.
117
- */
118
-
119
- inout group: Occurrence[0..*] nonunique;
120
- inout occ: Occurrence[0..1];
121
-
122
- private composite step removeStep : remove {
123
- inout seq = group;
124
- in values = occ;
125
- }
126
- private succession removeStep then destroyStep;
127
- private composite step destroyStep : destroy {
128
- inout occ = removeOld::occ;
129
- }
130
-
131
- }
132
-
133
- behavior removeOldAt {
134
- doc
135
- /*
136
- * Removes the occurrence at a given index in an ordered group of occurrences
137
- * and destroy it.
138
- */
139
- inout group: Occurrence[0..*] ordered nonunique;
140
- in index: Positive[1];
141
-
142
- private feature oldOcc = group#(index);
143
-
144
- private composite step removeStep : remove {
145
- inout seq = group;
146
- in index = removeOldAt::index;
147
- }
148
- private succession removeStep then destroyStep;
149
- private composite step destroyStep : destroy {
150
- inout occ = oldOcc;
151
- }
152
-
153
- }
1
+ standard library package OccurrenceFunctions {
2
+ doc
3
+ /*
4
+ * This package defines utility functions that operate on occurrences, primarily related to
5
+ * time during which those occurrences exist.
6
+ */
7
+
8
+ private import Occurrences::Occurrence;
9
+ private import Occurrences::HappensDuring;
10
+ private import ScalarValues::Boolean;
11
+ private import ScalarValues::Positive;
12
+ private import SequenceFunctions::notEmpty;
13
+ private import SequenceFunctions::size;
14
+ private import SequenceFunctions::add;
15
+ private import SequenceFunctions::addAt;
16
+ private import SequenceFunctions::remove;
17
+ private import SequenceFunctions::removeAt;
18
+ private import ControlFunctions::forAll;
19
+
20
+ function '===' specializes BaseFunctions::'===' {
21
+ doc
22
+ /*
23
+ * Test whether two occurrences are portions of the same life. That is, whether they
24
+ * represent different portions of the same entity (colloquially, whether they have
25
+ * the same "identity").
26
+ */
27
+
28
+ in x: Occurrence[0..1];
29
+ in y: Occurrence[0..1];
30
+
31
+ return : Boolean[1] = x.portionOfLife == y.portionOfLife;
32
+ }
33
+
34
+ function isDuring {
35
+ doc
36
+ /*
37
+ * Test whether a performance of this function happens during the input occurrence.
38
+ */
39
+
40
+ in occ: Occurrence[1];
41
+
42
+ private connector all during: HappensDuring[0..1] from self to occ;
43
+
44
+ return : Boolean[1] = notEmpty(during);
45
+ }
46
+
47
+ function create {
48
+ doc
49
+ /*
50
+ * Ensure that the start of a given occurrence happens during a performance of this
51
+ * function. The occurrence is also returned from the function.
52
+ */
53
+
54
+ inout occ: Occurrence[1];
55
+
56
+ private connector : HappensDuring from occ.startShot to self;
57
+
58
+ return : Occurrence[1] = occ;
59
+ }
60
+
61
+ function destroy {
62
+ doc
63
+ /*
64
+ * Ensure that the end of a given occurrence happens during a performance of this
65
+ * function. The occurrence is also returned from the function.
66
+ */
67
+
68
+ inout occ: Occurrence[0..1];
69
+
70
+ private connector : HappensDuring from [0..1] occ.endShot to self;
71
+
72
+ return : Occurrence[0..1] = occ;
73
+ }
74
+
75
+ function addNew {
76
+ doc
77
+ /*
78
+ * Add a newly created occurrence to the given group of occurrences and return the
79
+ * new occurrence.
80
+ */
81
+
82
+ inout group: Occurrence[0..*] nonunique;
83
+ inout occ: Occurrence[1];
84
+
85
+ private composite step : add {
86
+ inout seq1 = group;
87
+ in seq2 = create(occ);
88
+ }
89
+
90
+ return : Occurrence[1] = occ;
91
+ }
92
+
93
+ function addNewAt {
94
+ doc
95
+ /*
96
+ * Add a newly created occurrence to the given ordered group of occurrences at the given
97
+ * index and return the new occurrence.
98
+ */
99
+
100
+ inout group: Occurrence[0..*] ordered nonunique;
101
+ inout occ: Occurrence[1];
102
+ in index: Positive[1];
103
+
104
+ private composite step : addAt {
105
+ inout seq = group;
106
+ in values = create(occ);
107
+ in startIndex = index;
108
+ }
109
+
110
+ return : Occurrence[1] = occ;
111
+ }
112
+
113
+ behavior removeOld {
114
+ doc
115
+ /*
116
+ * Remove a given occurrence from a group of occurrences and destroy it.
117
+ */
118
+
119
+ inout group: Occurrence[0..*] nonunique;
120
+ inout occ: Occurrence[0..1];
121
+
122
+ private composite step removeStep : remove {
123
+ inout seq = group;
124
+ in values = occ;
125
+ }
126
+ private succession removeStep then destroyStep;
127
+ private composite step destroyStep : destroy {
128
+ inout occ = removeOld::occ;
129
+ }
130
+
131
+ }
132
+
133
+ behavior removeOldAt {
134
+ doc
135
+ /*
136
+ * Removes the occurrence at a given index in an ordered group of occurrences
137
+ * and destroy it.
138
+ */
139
+ inout group: Occurrence[0..*] ordered nonunique;
140
+ in index: Positive[1];
141
+
142
+ private feature oldOcc = group#(index);
143
+
144
+ private composite step removeStep : remove {
145
+ inout seq = group;
146
+ in index = removeOldAt::index;
147
+ }
148
+ private succession removeStep then destroyStep;
149
+ private composite step destroyStep : destroy {
150
+ inout occ = oldOcc;
151
+ }
152
+
153
+ }
154
154
  }