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.
- package/LICENSE +27 -27
- package/README.md +200 -200
- package/out/main.js +596 -141
- package/out/main.js.map +4 -4
- package/package.json +57 -57
- package/resources/sysml.dimension-table.json +1 -1
- package/resources/sysml.library/Domain Libraries/Analysis/.meta.json +9 -9
- package/resources/sysml.library/Domain Libraries/Analysis/.project.json +26 -26
- package/resources/sysml.library/Domain Libraries/Analysis/AnalysisTooling.sysml +33 -33
- package/resources/sysml.library/Domain Libraries/Analysis/SampledFunctions.sysml +118 -118
- package/resources/sysml.library/Domain Libraries/Analysis/StateSpaceRepresentation.sysml +143 -143
- package/resources/sysml.library/Domain Libraries/Analysis/TradeStudies.sysml +170 -170
- package/resources/sysml.library/Domain Libraries/Cause and Effect/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Cause and Effect/.project.json +22 -22
- package/resources/sysml.library/Domain Libraries/Cause and Effect/CausationConnections.sysml +82 -82
- package/resources/sysml.library/Domain Libraries/Cause and Effect/CauseAndEffect.sysml +81 -81
- package/resources/sysml.library/Domain Libraries/Geometry/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Geometry/.project.json +26 -26
- package/resources/sysml.library/Domain Libraries/Geometry/ShapeItems.sysml +898 -898
- package/resources/sysml.library/Domain Libraries/Geometry/SpatialItems.sysml +167 -167
- package/resources/sysml.library/Domain Libraries/Metadata/.meta.json +9 -9
- package/resources/sysml.library/Domain Libraries/Metadata/.project.json +18 -18
- package/resources/sysml.library/Domain Libraries/Metadata/ImageMetadata.sysml +77 -77
- package/resources/sysml.library/Domain Libraries/Metadata/ModelingMetadata.sysml +142 -142
- package/resources/sysml.library/Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml +38 -38
- package/resources/sysml.library/Domain Libraries/Metadata/RiskMetadata.sysml +99 -99
- package/resources/sysml.library/Domain Libraries/Quantities and Units/.meta.json +28 -28
- package/resources/sysml.library/Domain Libraries/Quantities and Units/.project.json +22 -22
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQ.sysml +42 -42
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAcoustics.sysml +439 -439
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAtomicNuclear.sysml +2726 -2726
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQBase.sysml +206 -206
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -1991
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQChemistryMolecular.sysml +1353 -1353
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCondensedMatter.sysml +1223 -1223
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQElectromagnetism.sysml +2333 -2333
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQInformation.sysml +958 -958
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQLight.sysml +1537 -1537
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQMechanics.sysml +1564 -1564
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQSpaceTime.sysml +1169 -1169
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQThermodynamics.sysml +1256 -1256
- package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementRefCalculations.sysml +30 -30
- package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementReferences.sysml +526 -526
- package/resources/sysml.library/Domain Libraries/Quantities and Units/Quantities.sysml +107 -107
- package/resources/sysml.library/Domain Libraries/Quantities and Units/QuantityCalculations.sysml +70 -70
- package/resources/sysml.library/Domain Libraries/Quantities and Units/SI.sysml +378 -378
- package/resources/sysml.library/Domain Libraries/Quantities and Units/SIPrefixes.sysml +48 -48
- package/resources/sysml.library/Domain Libraries/Quantities and Units/TensorCalculations.sysml +49 -49
- package/resources/sysml.library/Domain Libraries/Quantities and Units/Time.sysml +274 -274
- package/resources/sysml.library/Domain Libraries/Quantities and Units/USCustomaryUnits.sysml +260 -260
- package/resources/sysml.library/Domain Libraries/Quantities and Units/VectorCalculations.sysml +62 -62
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/.project.json +18 -18
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/DerivationConnections.sysml +62 -62
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/RequirementDerivation.sysml +38 -38
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.meta.json +8 -8
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.project.json +10 -10
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/Collections.kerml +176 -176
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/ScalarValues.kerml +23 -23
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/VectorValues.kerml +63 -63
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.meta.json +22 -22
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.project.json +14 -14
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BaseFunctions.kerml +79 -79
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BooleanFunctions.kerml +22 -22
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/CollectionFunctions.kerml +68 -68
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ComplexFunctions.kerml +47 -47
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ControlFunctions.kerml +116 -116
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml +42 -42
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml +43 -43
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml +27 -27
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml +42 -42
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml +153 -153
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml +49 -49
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml +56 -56
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml +32 -32
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml +110 -110
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml +25 -25
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml +34 -34
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/VectorFunctions.kerml +272 -272
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.meta.json +21 -21
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.project.json +14 -14
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Base.kerml +94 -94
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Clocks.kerml +155 -155
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/ControlPerformances.kerml +134 -134
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/FeatureReferencingPerformances.kerml +189 -189
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/KerML.kerml +483 -483
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Links.kerml +66 -66
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Metaobjects.kerml +57 -57
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Objects.kerml +212 -212
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Observation.kerml +160 -160
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml +992 -992
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Performances.kerml +292 -292
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml +196 -196
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml +144 -144
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Transfers.kerml +280 -280
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/TransitionPerformances.kerml +65 -65
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Triggers.kerml +187 -187
- package/resources/sysml.library/LICENSE +276 -276
- package/resources/sysml.library/NOTICE.md +20 -20
- package/resources/sysml.library/Systems Library/Actions.sysml +556 -556
- package/resources/sysml.library/Systems Library/Allocations.sysml +28 -28
- package/resources/sysml.library/Systems Library/AnalysisCases.sysml +37 -37
- package/resources/sysml.library/Systems Library/Attributes.sysml +24 -24
- package/resources/sysml.library/Systems Library/Calculations.sysml +36 -36
- package/resources/sysml.library/Systems Library/Cases.sysml +70 -70
- package/resources/sysml.library/Systems Library/Connections.sysml +59 -59
- package/resources/sysml.library/Systems Library/Constraints.sysml +43 -43
- package/resources/sysml.library/Systems Library/Flows.sysml +125 -125
- package/resources/sysml.library/Systems Library/Interfaces.sysml +88 -88
- package/resources/sysml.library/Systems Library/Items.sysml +152 -152
- package/resources/sysml.library/Systems Library/Metadata.sysml +31 -31
- package/resources/sysml.library/Systems Library/Parts.sysml +80 -80
- package/resources/sysml.library/Systems Library/Ports.sysml +53 -53
- package/resources/sysml.library/Systems Library/Requirements.sysml +193 -193
- package/resources/sysml.library/Systems Library/StandardViewDefinitions.sysml +123 -123
- package/resources/sysml.library/Systems Library/States.sysml +102 -102
- package/resources/sysml.library/Systems Library/SysML.sysml +539 -539
- package/resources/sysml.library/Systems Library/UseCases.sysml +56 -56
- package/resources/sysml.library/Systems Library/VerificationCases.sysml +102 -102
- package/resources/sysml.library/Systems Library/Views.sysml +163 -163
- package/resources/sysml.library.index.json +1 -1
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
standard library package RationalFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines Functions on Rational values, including concrete specializations of the
|
|
5
|
-
* general arithmetic and comparison operations.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
public import ScalarValues::*;
|
|
9
|
-
|
|
10
|
-
function rat { in numer: Integer[1]; in denum: Integer[1]; return : Rational[1]; }
|
|
11
|
-
function numer { in rat: Rational[1]; return : Integer[1]; }
|
|
12
|
-
function denom { in rat: Rational[1]; return : Integer[1]; }
|
|
13
|
-
|
|
14
|
-
function abs specializes RealFunctions::abs { in x: Rational[1]; return : Rational[1]; }
|
|
15
|
-
|
|
16
|
-
function '+' specializes RealFunctions::'+' { in x: Rational[1]; in y: Rational[0..1]; return : Rational[1]; }
|
|
17
|
-
function '-' specializes RealFunctions::'-' { in x: Rational[1]; in y: Rational[0..1]; return : Rational[1]; }
|
|
18
|
-
function '*' specializes RealFunctions::'*' { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
19
|
-
function '/' specializes RealFunctions::'/' { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
20
|
-
function '**' specializes RealFunctions::'**' { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
21
|
-
function '^' specializes RealFunctions::'^' { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
22
|
-
|
|
23
|
-
function '<' specializes RealFunctions::'<' { in x: Rational[1]; in y: Rational[1]; return : Boolean[1]; }
|
|
24
|
-
function '>' specializes RealFunctions::'>' { in x: Rational[1]; in y: Rational[1]; return : Boolean[1]; }
|
|
25
|
-
function '<=' specializes RealFunctions::'<=' { in x: Rational[1]; in y: Rational[1]; return : Boolean[1]; }
|
|
26
|
-
function '>=' specializes RealFunctions::'>=' { in x: Rational[1]; in y: Rational[1]; return : Boolean[1]; }
|
|
27
|
-
|
|
28
|
-
function max specializes RealFunctions::max { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
29
|
-
function min specializes RealFunctions::min { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
30
|
-
|
|
31
|
-
function '==' specializes RealFunctions::'==' { in x: Rational[0..1]; in y: Rational[0..1]; return : Boolean[1]; }
|
|
32
|
-
|
|
33
|
-
function gcd{ in x: Rational[1]; in y: Rational[1]; return : Integer[1]; }
|
|
34
|
-
|
|
35
|
-
function floor specializes RealFunctions::floor { in x: Rational[1]; return : Integer[1]; }
|
|
36
|
-
function round specializes RealFunctions::round { in x: Rational[1]; return : Integer[1]; }
|
|
37
|
-
|
|
38
|
-
function ToString specializes RealFunctions::ToString { in x: Rational[1]; return : String[1]; }
|
|
39
|
-
function ToInteger{ in x: Rational[1]; return : Integer[1]; }
|
|
40
|
-
function ToRational{ in x: String[1]; return : Rational[1]; }
|
|
41
|
-
|
|
42
|
-
function sum specializes RealFunctions::sum { in collection: Rational[0..*];
|
|
43
|
-
return : Rational[1] default NumericalFunctions::sum0(collection, rat(0, 1));
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function product specializes RealFunctions::product { in collection: Rational[0..*];
|
|
47
|
-
return : Rational[1] default NumericalFunctions::product1(collection, rat(1, 1));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
1
|
+
standard library package RationalFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines Functions on Rational values, including concrete specializations of the
|
|
5
|
+
* general arithmetic and comparison operations.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
public import ScalarValues::*;
|
|
9
|
+
|
|
10
|
+
function rat { in numer: Integer[1]; in denum: Integer[1]; return : Rational[1]; }
|
|
11
|
+
function numer { in rat: Rational[1]; return : Integer[1]; }
|
|
12
|
+
function denom { in rat: Rational[1]; return : Integer[1]; }
|
|
13
|
+
|
|
14
|
+
function abs specializes RealFunctions::abs { in x: Rational[1]; return : Rational[1]; }
|
|
15
|
+
|
|
16
|
+
function '+' specializes RealFunctions::'+' { in x: Rational[1]; in y: Rational[0..1]; return : Rational[1]; }
|
|
17
|
+
function '-' specializes RealFunctions::'-' { in x: Rational[1]; in y: Rational[0..1]; return : Rational[1]; }
|
|
18
|
+
function '*' specializes RealFunctions::'*' { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
19
|
+
function '/' specializes RealFunctions::'/' { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
20
|
+
function '**' specializes RealFunctions::'**' { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
21
|
+
function '^' specializes RealFunctions::'^' { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
22
|
+
|
|
23
|
+
function '<' specializes RealFunctions::'<' { in x: Rational[1]; in y: Rational[1]; return : Boolean[1]; }
|
|
24
|
+
function '>' specializes RealFunctions::'>' { in x: Rational[1]; in y: Rational[1]; return : Boolean[1]; }
|
|
25
|
+
function '<=' specializes RealFunctions::'<=' { in x: Rational[1]; in y: Rational[1]; return : Boolean[1]; }
|
|
26
|
+
function '>=' specializes RealFunctions::'>=' { in x: Rational[1]; in y: Rational[1]; return : Boolean[1]; }
|
|
27
|
+
|
|
28
|
+
function max specializes RealFunctions::max { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
29
|
+
function min specializes RealFunctions::min { in x: Rational[1]; in y: Rational[1]; return : Rational[1]; }
|
|
30
|
+
|
|
31
|
+
function '==' specializes RealFunctions::'==' { in x: Rational[0..1]; in y: Rational[0..1]; return : Boolean[1]; }
|
|
32
|
+
|
|
33
|
+
function gcd{ in x: Rational[1]; in y: Rational[1]; return : Integer[1]; }
|
|
34
|
+
|
|
35
|
+
function floor specializes RealFunctions::floor { in x: Rational[1]; return : Integer[1]; }
|
|
36
|
+
function round specializes RealFunctions::round { in x: Rational[1]; return : Integer[1]; }
|
|
37
|
+
|
|
38
|
+
function ToString specializes RealFunctions::ToString { in x: Rational[1]; return : String[1]; }
|
|
39
|
+
function ToInteger{ in x: Rational[1]; return : Integer[1]; }
|
|
40
|
+
function ToRational{ in x: String[1]; return : Rational[1]; }
|
|
41
|
+
|
|
42
|
+
function sum specializes RealFunctions::sum { in collection: Rational[0..*];
|
|
43
|
+
return : Rational[1] default NumericalFunctions::sum0(collection, rat(0, 1));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function product specializes RealFunctions::product { in collection: Rational[0..*];
|
|
47
|
+
return : Rational[1] default NumericalFunctions::product1(collection, rat(1, 1));
|
|
48
|
+
}
|
|
49
|
+
}
|
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
standard library package RealFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines Functions on Real values, including concrete specializations of the
|
|
5
|
-
* general arithmetic and comparison operations.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
public import ScalarValues::*;
|
|
9
|
-
|
|
10
|
-
function re :> ComplexFunctions::re{ in x: Real[1];
|
|
11
|
-
return : Real[1] = x;
|
|
12
|
-
}
|
|
13
|
-
function im :> ComplexFunctions::im{ in x: Real[1];
|
|
14
|
-
return : Real[1] = 0.0;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function abs specializes ComplexFunctions::abs { in x: Real[1]; return : Real[1]; }
|
|
18
|
-
function arg specializes ComplexFunctions::arg { in x: Real[1];
|
|
19
|
-
return : Real[1] = 0.0;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function '+' specializes ComplexFunctions::'+' { in x: Real[1]; in y: Real[0..1]; return : Real[1]; }
|
|
23
|
-
function '-' specializes ComplexFunctions::'-' { in x: Real[1]; in y: Real[0..1]; return : Real[1]; }
|
|
24
|
-
function '*' specializes ComplexFunctions::'*' { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
25
|
-
function '/' specializes ComplexFunctions::'/' { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
26
|
-
function '**' specializes ComplexFunctions::'**' { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
27
|
-
function '^' specializes ComplexFunctions::'^' { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
28
|
-
|
|
29
|
-
function '<' specializes NumericalFunctions::'<' { in x: Real[1]; in y: Real[1]; return : Boolean[1]; }
|
|
30
|
-
function '>' specializes NumericalFunctions::'>' { in x: Real[1]; in y: Real[1]; return : Boolean[1]; }
|
|
31
|
-
function '<=' specializes NumericalFunctions::'<=' { in x: Real[1]; in y: Real[1]; return : Boolean[1]; }
|
|
32
|
-
function '>=' specializes NumericalFunctions::'>=' { in x: Real[1]; in y: Real[1]; return : Boolean[1]; }
|
|
33
|
-
|
|
34
|
-
function max specializes NumericalFunctions::max { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
35
|
-
function min specializes NumericalFunctions::min { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
36
|
-
|
|
37
|
-
function '==' specializes ComplexFunctions::'==' { in x: Real[0..1]; in y: Real[0..1]; return : Boolean[1]; }
|
|
38
|
-
|
|
39
|
-
function sqrt{ in x: Real[1]; return : Real[1]; }
|
|
40
|
-
|
|
41
|
-
function floor{ in x: Real[1]; return : Integer[1]; }
|
|
42
|
-
function round{ in x: Real[1]; return : Integer[1]; }
|
|
43
|
-
|
|
44
|
-
function ToString specializes ComplexFunctions::ToString { in x: Real[1]; return : String[1]; }
|
|
45
|
-
function ToInteger{ in x: Real[1]; return : Integer[1]; }
|
|
46
|
-
function ToRational{ in x: Real[1]; return : Rational[1]; }
|
|
47
|
-
function ToReal{ in x: String[1]; return : Real[1]; }
|
|
48
|
-
|
|
49
|
-
function sum specializes ComplexFunctions::sum { in collection: Real[0..*];
|
|
50
|
-
return : Real default NumericalFunctions::sum0(collection, 0.0);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function product specializes ComplexFunctions::product { in collection: Real[0..*];
|
|
54
|
-
return : Real default NumericalFunctions::product1(collection, 1.0);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
1
|
+
standard library package RealFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines Functions on Real values, including concrete specializations of the
|
|
5
|
+
* general arithmetic and comparison operations.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
public import ScalarValues::*;
|
|
9
|
+
|
|
10
|
+
function re :> ComplexFunctions::re{ in x: Real[1];
|
|
11
|
+
return : Real[1] = x;
|
|
12
|
+
}
|
|
13
|
+
function im :> ComplexFunctions::im{ in x: Real[1];
|
|
14
|
+
return : Real[1] = 0.0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function abs specializes ComplexFunctions::abs { in x: Real[1]; return : Real[1]; }
|
|
18
|
+
function arg specializes ComplexFunctions::arg { in x: Real[1];
|
|
19
|
+
return : Real[1] = 0.0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function '+' specializes ComplexFunctions::'+' { in x: Real[1]; in y: Real[0..1]; return : Real[1]; }
|
|
23
|
+
function '-' specializes ComplexFunctions::'-' { in x: Real[1]; in y: Real[0..1]; return : Real[1]; }
|
|
24
|
+
function '*' specializes ComplexFunctions::'*' { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
25
|
+
function '/' specializes ComplexFunctions::'/' { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
26
|
+
function '**' specializes ComplexFunctions::'**' { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
27
|
+
function '^' specializes ComplexFunctions::'^' { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
28
|
+
|
|
29
|
+
function '<' specializes NumericalFunctions::'<' { in x: Real[1]; in y: Real[1]; return : Boolean[1]; }
|
|
30
|
+
function '>' specializes NumericalFunctions::'>' { in x: Real[1]; in y: Real[1]; return : Boolean[1]; }
|
|
31
|
+
function '<=' specializes NumericalFunctions::'<=' { in x: Real[1]; in y: Real[1]; return : Boolean[1]; }
|
|
32
|
+
function '>=' specializes NumericalFunctions::'>=' { in x: Real[1]; in y: Real[1]; return : Boolean[1]; }
|
|
33
|
+
|
|
34
|
+
function max specializes NumericalFunctions::max { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
35
|
+
function min specializes NumericalFunctions::min { in x: Real[1]; in y: Real[1]; return : Real[1]; }
|
|
36
|
+
|
|
37
|
+
function '==' specializes ComplexFunctions::'==' { in x: Real[0..1]; in y: Real[0..1]; return : Boolean[1]; }
|
|
38
|
+
|
|
39
|
+
function sqrt{ in x: Real[1]; return : Real[1]; }
|
|
40
|
+
|
|
41
|
+
function floor{ in x: Real[1]; return : Integer[1]; }
|
|
42
|
+
function round{ in x: Real[1]; return : Integer[1]; }
|
|
43
|
+
|
|
44
|
+
function ToString specializes ComplexFunctions::ToString { in x: Real[1]; return : String[1]; }
|
|
45
|
+
function ToInteger{ in x: Real[1]; return : Integer[1]; }
|
|
46
|
+
function ToRational{ in x: Real[1]; return : Rational[1]; }
|
|
47
|
+
function ToReal{ in x: String[1]; return : Real[1]; }
|
|
48
|
+
|
|
49
|
+
function sum specializes ComplexFunctions::sum { in collection: Real[0..*];
|
|
50
|
+
return : Real default NumericalFunctions::sum0(collection, 0.0);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function product specializes ComplexFunctions::product { in collection: Real[0..*];
|
|
54
|
+
return : Real default NumericalFunctions::product1(collection, 1.0);
|
|
55
|
+
}
|
|
56
|
+
}
|
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
standard library package ScalarFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines abstract functions that specialize the DataFunctions for use with ScalarValues.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
public import ScalarValues::*;
|
|
8
|
-
|
|
9
|
-
abstract function '+' specializes DataFunctions::'+' { in x: ScalarValue[1]; in y: ScalarValue[0..1]; return : ScalarValue[1]; }
|
|
10
|
-
abstract function '-' specializes DataFunctions::'-' { in x: ScalarValue[1]; in y: ScalarValue[0..1]; return : ScalarValue[1]; }
|
|
11
|
-
abstract function '*' specializes DataFunctions::'*' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
12
|
-
abstract function '/' specializes DataFunctions::'/' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
13
|
-
abstract function '**' specializes DataFunctions::'**' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
14
|
-
abstract function '^' specializes DataFunctions::'^' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
15
|
-
abstract function '%' specializes DataFunctions::'%' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
16
|
-
|
|
17
|
-
abstract function 'not' specializes DataFunctions::'not' { in x: ScalarValue[1]; return : ScalarValue[1]; }
|
|
18
|
-
abstract function 'xor' specializes DataFunctions::'xor' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
19
|
-
|
|
20
|
-
abstract function '~' specializes DataFunctions::'~' { in x: ScalarValue[1]; return : ScalarValue[1]; }
|
|
21
|
-
abstract function '|' specializes DataFunctions::'|' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
22
|
-
abstract function '&' specializes DataFunctions::'&' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
23
|
-
|
|
24
|
-
abstract function '<' specializes DataFunctions::'<' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : Boolean[1]; }
|
|
25
|
-
abstract function '>' specializes DataFunctions::'>' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : Boolean[1]; }
|
|
26
|
-
abstract function '<=' specializes DataFunctions::'<=' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : Boolean[1]; }
|
|
27
|
-
abstract function '>=' specializes DataFunctions::'>=' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : Boolean[1]; }
|
|
28
|
-
|
|
29
|
-
abstract function max specializes DataFunctions::max { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
30
|
-
abstract function min specializes DataFunctions::min { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
31
|
-
|
|
32
|
-
abstract function '..' specializes DataFunctions::'..' { in lower: ScalarValue[1]; in upper: ScalarValue[1]; return : ScalarValue[0..*]; }
|
|
1
|
+
standard library package ScalarFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines abstract functions that specialize the DataFunctions for use with ScalarValues.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
public import ScalarValues::*;
|
|
8
|
+
|
|
9
|
+
abstract function '+' specializes DataFunctions::'+' { in x: ScalarValue[1]; in y: ScalarValue[0..1]; return : ScalarValue[1]; }
|
|
10
|
+
abstract function '-' specializes DataFunctions::'-' { in x: ScalarValue[1]; in y: ScalarValue[0..1]; return : ScalarValue[1]; }
|
|
11
|
+
abstract function '*' specializes DataFunctions::'*' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
12
|
+
abstract function '/' specializes DataFunctions::'/' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
13
|
+
abstract function '**' specializes DataFunctions::'**' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
14
|
+
abstract function '^' specializes DataFunctions::'^' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
15
|
+
abstract function '%' specializes DataFunctions::'%' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
16
|
+
|
|
17
|
+
abstract function 'not' specializes DataFunctions::'not' { in x: ScalarValue[1]; return : ScalarValue[1]; }
|
|
18
|
+
abstract function 'xor' specializes DataFunctions::'xor' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
19
|
+
|
|
20
|
+
abstract function '~' specializes DataFunctions::'~' { in x: ScalarValue[1]; return : ScalarValue[1]; }
|
|
21
|
+
abstract function '|' specializes DataFunctions::'|' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
22
|
+
abstract function '&' specializes DataFunctions::'&' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
23
|
+
|
|
24
|
+
abstract function '<' specializes DataFunctions::'<' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : Boolean[1]; }
|
|
25
|
+
abstract function '>' specializes DataFunctions::'>' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : Boolean[1]; }
|
|
26
|
+
abstract function '<=' specializes DataFunctions::'<=' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : Boolean[1]; }
|
|
27
|
+
abstract function '>=' specializes DataFunctions::'>=' { in x: ScalarValue[1]; in y: ScalarValue[1]; return : Boolean[1]; }
|
|
28
|
+
|
|
29
|
+
abstract function max specializes DataFunctions::max { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
30
|
+
abstract function min specializes DataFunctions::min { in x: ScalarValue[1]; in y: ScalarValue[1]; return : ScalarValue[1]; }
|
|
31
|
+
|
|
32
|
+
abstract function '..' specializes DataFunctions::'..' { in lower: ScalarValue[1]; in upper: ScalarValue[1]; return : ScalarValue[0..*]; }
|
|
33
33
|
}
|
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml
CHANGED
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
standard library package SequenceFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines functions that operate on general sequences of values. (For functions that
|
|
5
|
-
* operate on Collection values, see CollectionFunctions.)
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
private import Base::Anything;
|
|
9
|
-
private import Occurrences::SelfSameLifeLink;
|
|
10
|
-
private import ScalarValues::*;
|
|
11
|
-
private import ControlFunctions::*;
|
|
12
|
-
|
|
13
|
-
function '#' specializes BaseFunctions::'#' { in seq: Anything[0..*] ordered nonunique; in index: Positive[1];
|
|
14
|
-
return : Anything[0..1];
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function equals{ in x: Anything[0..*] ordered nonunique; in y: Anything[0..*] ordered nonunique;
|
|
18
|
-
return : Boolean[1] =
|
|
19
|
-
size(x) == size(y) and
|
|
20
|
-
(1..size(x))->forAll {in i; x#(i) == y#(i)};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function same{ in x: Anything[0..*] ordered nonunique; in y: Anything[0..*] ordered nonunique;
|
|
24
|
-
return : Boolean[1] =
|
|
25
|
-
size(x) == size(y) and
|
|
26
|
-
(1..size(x))->forAll {in i; x#(i) === y#(i)};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function size{ in seq: Anything[0..*] nonunique;
|
|
30
|
-
return : Natural[1] = if isEmpty(seq)? 0 else size(tail(seq)) + 1;
|
|
31
|
-
}
|
|
32
|
-
function isEmpty{ in seq: Anything[0..*] nonunique;
|
|
33
|
-
return : Boolean[1] = seq == null;
|
|
34
|
-
}
|
|
35
|
-
function notEmpty{ in seq: Anything[0..*] nonunique;
|
|
36
|
-
return : Boolean[1] = not isEmpty(seq);
|
|
37
|
-
}
|
|
38
|
-
function includes{ in seq1: Anything[0..*] nonunique; in seq2: Anything[0..*] nonunique;
|
|
39
|
-
return : Boolean[1] = seq2->forAll {in x; seq1->exists{in y; x == y}};
|
|
40
|
-
}
|
|
41
|
-
function includesOnly{ in seq1: Anything[0..*] nonunique; in seq2: Anything[0..*] nonunique;
|
|
42
|
-
return : Boolean[1] = seq1->includes(seq2) and seq2->includes(seq1);
|
|
43
|
-
}
|
|
44
|
-
function excludes{ in seq1: Anything[0..*] nonunique; in seq2: Anything[0..*] nonunique;
|
|
45
|
-
return : Boolean[1] = seq2->forAll {in x; seq1->excludes(x)};
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function union{ in seq1: Anything[0..*] ordered nonunique; in seq2: Anything[0..*] ordered nonunique;
|
|
49
|
-
return : Anything[0..*] ordered nonunique = (seq1, seq2);
|
|
50
|
-
}
|
|
51
|
-
function intersection{ in seq1: Anything[0..*] ordered nonunique; in seq2: Anything[0..*] ordered nonunique;
|
|
52
|
-
return : Anything[0..*] ordered nonunique = seq1->select {in x; seq2->includes(x)};
|
|
53
|
-
}
|
|
54
|
-
function including{ in seq: Anything[0..*] ordered nonunique; in values: Anything[0..*] ordered nonunique;
|
|
55
|
-
return : Anything[0..*] ordered nonunique = union(seq, values);
|
|
56
|
-
}
|
|
57
|
-
function includingAt{ in seq: Anything[0..*] ordered nonunique; in values: Anything[0..*] ordered nonunique;
|
|
58
|
-
in index: Positive[1];
|
|
59
|
-
return : Anything[0..*] ordered nonunique =
|
|
60
|
-
(seq->subsequence(1, index - 1), values, seq->subsequence(index + 1));
|
|
61
|
-
}
|
|
62
|
-
function excluding{ in seq: Anything[0..*] ordered nonunique; in values: Anything[0..*];
|
|
63
|
-
return : Anything[0..*] ordered nonunique = seq->reject {in x; values->includes(x)};
|
|
64
|
-
}
|
|
65
|
-
function excludingAt{ in seq: Anything[0..*] ordered nonunique;
|
|
66
|
-
in startIndex: Positive[1]; in endIndex: Positive[1] default startIndex;
|
|
67
|
-
return : Anything[0..*] ordered nonunique =
|
|
68
|
-
(seq->subsequence(1, startIndex - 1), seq->subsequence(endIndex + 1));
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function subsequence{ in seq: Anything[0..*] ordered nonunique;
|
|
72
|
-
in startIndex: Positive[1]; in endIndex: Positive[1] default size(seq);
|
|
73
|
-
return : Anything[0..*] = (startIndex..endIndex)->collect {in i; seq#(i)};
|
|
74
|
-
}
|
|
75
|
-
function head{ in seq: Anything[0..*] ordered nonunique;
|
|
76
|
-
return : Anything[0..1] = seq#(1);
|
|
77
|
-
}
|
|
78
|
-
function tail{ in seq: Anything[0..*] ordered nonunique;
|
|
79
|
-
return : Anything[0..*] ordered nonunique = subsequence(seq, 2);
|
|
80
|
-
}
|
|
81
|
-
function last{ in seq: Anything[0..*] ordered nonunique;
|
|
82
|
-
return : Anything[0..1] = seq#(size(seq));
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
behavior add { inout seq: Anything[0..*] ordered nonunique; in values: Anything[0..*] ordered nonunique;
|
|
86
|
-
private feature newSeq = seq->including(values);
|
|
87
|
-
feature redefines endShot: add {
|
|
88
|
-
binding seq = newSeq;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
behavior addAt { inout seq: Anything[0..*] ordered nonunique; in values: Anything[0..*] ordered nonunique;
|
|
92
|
-
in index: Positive[1];
|
|
93
|
-
private feature newSeq = seq->includingAt(values, index);
|
|
94
|
-
feature redefines endShot: addAt {
|
|
95
|
-
binding seq = newSeq;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
behavior remove{ inout seq: Anything[0..*] ordered nonunique; in values: Anything[0..*];
|
|
99
|
-
private feature newSeq = seq->excluding(values);
|
|
100
|
-
feature redefines endShot: remove {
|
|
101
|
-
binding seq = newSeq;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
behavior removeAt{ inout seq: Anything[0..*] ordered nonunique;
|
|
105
|
-
in startIndex: Positive[1]; in endIndex: Positive[1] default startIndex;
|
|
106
|
-
private feature newSeq = seq->excludingAt(startIndex, endIndex);
|
|
107
|
-
feature redefines endShot: removeAt {
|
|
108
|
-
binding seq = newSeq;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
1
|
+
standard library package SequenceFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines functions that operate on general sequences of values. (For functions that
|
|
5
|
+
* operate on Collection values, see CollectionFunctions.)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
private import Base::Anything;
|
|
9
|
+
private import Occurrences::SelfSameLifeLink;
|
|
10
|
+
private import ScalarValues::*;
|
|
11
|
+
private import ControlFunctions::*;
|
|
12
|
+
|
|
13
|
+
function '#' specializes BaseFunctions::'#' { in seq: Anything[0..*] ordered nonunique; in index: Positive[1];
|
|
14
|
+
return : Anything[0..1];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function equals{ in x: Anything[0..*] ordered nonunique; in y: Anything[0..*] ordered nonunique;
|
|
18
|
+
return : Boolean[1] =
|
|
19
|
+
size(x) == size(y) and
|
|
20
|
+
(1..size(x))->forAll {in i; x#(i) == y#(i)};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function same{ in x: Anything[0..*] ordered nonunique; in y: Anything[0..*] ordered nonunique;
|
|
24
|
+
return : Boolean[1] =
|
|
25
|
+
size(x) == size(y) and
|
|
26
|
+
(1..size(x))->forAll {in i; x#(i) === y#(i)};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function size{ in seq: Anything[0..*] nonunique;
|
|
30
|
+
return : Natural[1] = if isEmpty(seq)? 0 else size(tail(seq)) + 1;
|
|
31
|
+
}
|
|
32
|
+
function isEmpty{ in seq: Anything[0..*] nonunique;
|
|
33
|
+
return : Boolean[1] = seq == null;
|
|
34
|
+
}
|
|
35
|
+
function notEmpty{ in seq: Anything[0..*] nonunique;
|
|
36
|
+
return : Boolean[1] = not isEmpty(seq);
|
|
37
|
+
}
|
|
38
|
+
function includes{ in seq1: Anything[0..*] nonunique; in seq2: Anything[0..*] nonunique;
|
|
39
|
+
return : Boolean[1] = seq2->forAll {in x; seq1->exists{in y; x == y}};
|
|
40
|
+
}
|
|
41
|
+
function includesOnly{ in seq1: Anything[0..*] nonunique; in seq2: Anything[0..*] nonunique;
|
|
42
|
+
return : Boolean[1] = seq1->includes(seq2) and seq2->includes(seq1);
|
|
43
|
+
}
|
|
44
|
+
function excludes{ in seq1: Anything[0..*] nonunique; in seq2: Anything[0..*] nonunique;
|
|
45
|
+
return : Boolean[1] = seq2->forAll {in x; seq1->excludes(x)};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function union{ in seq1: Anything[0..*] ordered nonunique; in seq2: Anything[0..*] ordered nonunique;
|
|
49
|
+
return : Anything[0..*] ordered nonunique = (seq1, seq2);
|
|
50
|
+
}
|
|
51
|
+
function intersection{ in seq1: Anything[0..*] ordered nonunique; in seq2: Anything[0..*] ordered nonunique;
|
|
52
|
+
return : Anything[0..*] ordered nonunique = seq1->select {in x; seq2->includes(x)};
|
|
53
|
+
}
|
|
54
|
+
function including{ in seq: Anything[0..*] ordered nonunique; in values: Anything[0..*] ordered nonunique;
|
|
55
|
+
return : Anything[0..*] ordered nonunique = union(seq, values);
|
|
56
|
+
}
|
|
57
|
+
function includingAt{ in seq: Anything[0..*] ordered nonunique; in values: Anything[0..*] ordered nonunique;
|
|
58
|
+
in index: Positive[1];
|
|
59
|
+
return : Anything[0..*] ordered nonunique =
|
|
60
|
+
(seq->subsequence(1, index - 1), values, seq->subsequence(index + 1));
|
|
61
|
+
}
|
|
62
|
+
function excluding{ in seq: Anything[0..*] ordered nonunique; in values: Anything[0..*];
|
|
63
|
+
return : Anything[0..*] ordered nonunique = seq->reject {in x; values->includes(x)};
|
|
64
|
+
}
|
|
65
|
+
function excludingAt{ in seq: Anything[0..*] ordered nonunique;
|
|
66
|
+
in startIndex: Positive[1]; in endIndex: Positive[1] default startIndex;
|
|
67
|
+
return : Anything[0..*] ordered nonunique =
|
|
68
|
+
(seq->subsequence(1, startIndex - 1), seq->subsequence(endIndex + 1));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function subsequence{ in seq: Anything[0..*] ordered nonunique;
|
|
72
|
+
in startIndex: Positive[1]; in endIndex: Positive[1] default size(seq);
|
|
73
|
+
return : Anything[0..*] = (startIndex..endIndex)->collect {in i; seq#(i)};
|
|
74
|
+
}
|
|
75
|
+
function head{ in seq: Anything[0..*] ordered nonunique;
|
|
76
|
+
return : Anything[0..1] = seq#(1);
|
|
77
|
+
}
|
|
78
|
+
function tail{ in seq: Anything[0..*] ordered nonunique;
|
|
79
|
+
return : Anything[0..*] ordered nonunique = subsequence(seq, 2);
|
|
80
|
+
}
|
|
81
|
+
function last{ in seq: Anything[0..*] ordered nonunique;
|
|
82
|
+
return : Anything[0..1] = seq#(size(seq));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
behavior add { inout seq: Anything[0..*] ordered nonunique; in values: Anything[0..*] ordered nonunique;
|
|
86
|
+
private feature newSeq = seq->including(values);
|
|
87
|
+
feature redefines endShot: add {
|
|
88
|
+
binding seq = newSeq;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
behavior addAt { inout seq: Anything[0..*] ordered nonunique; in values: Anything[0..*] ordered nonunique;
|
|
92
|
+
in index: Positive[1];
|
|
93
|
+
private feature newSeq = seq->includingAt(values, index);
|
|
94
|
+
feature redefines endShot: addAt {
|
|
95
|
+
binding seq = newSeq;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
behavior remove{ inout seq: Anything[0..*] ordered nonunique; in values: Anything[0..*];
|
|
99
|
+
private feature newSeq = seq->excluding(values);
|
|
100
|
+
feature redefines endShot: remove {
|
|
101
|
+
binding seq = newSeq;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
behavior removeAt{ inout seq: Anything[0..*] ordered nonunique;
|
|
105
|
+
in startIndex: Positive[1]; in endIndex: Positive[1] default startIndex;
|
|
106
|
+
private feature newSeq = seq->excludingAt(startIndex, endIndex);
|
|
107
|
+
feature redefines endShot: removeAt {
|
|
108
|
+
binding seq = newSeq;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
111
|
}
|
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
standard library package StringFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines functions on String values, including those corresponding to string concatenation
|
|
5
|
-
* and comparison operators in the KerML expression notation.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
public import ScalarValues::*;
|
|
9
|
-
|
|
10
|
-
function '+' specializes ScalarFunctions::'+' { in x: String[1]; in y:String[1]; return : String[1]; }
|
|
11
|
-
|
|
12
|
-
function Length{ in x: String[1]; return : Natural[1]; }
|
|
13
|
-
function Substring{ in x: String[1]; in lower: Integer[1]; in upper: Integer[1]; return : String[1]; }
|
|
14
|
-
|
|
15
|
-
function '<' specializes ScalarFunctions::'<' { in x: String[1]; in y: String[1]; return : Boolean[1]; }
|
|
16
|
-
function '>' specializes ScalarFunctions::'>' { in x: String[1]; in y: String[1]; return : Boolean[1]; }
|
|
17
|
-
function '<=' specializes ScalarFunctions::'<=' { in x: String[1]; in y: String[1]; return : Boolean[1]; }
|
|
18
|
-
function '>=' specializes ScalarFunctions::'>=' { in x: String[1]; in y: String[1]; return : Boolean[1]; }
|
|
19
|
-
|
|
20
|
-
function '==' specializes DataFunctions::'==' { in x: String[0..1]; in y: String[0..1]; return : Boolean[1]; }
|
|
21
|
-
|
|
22
|
-
function ToString specializes BaseFunctions::ToString { in x: String[1];
|
|
23
|
-
return : String[1] = x;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
standard library package StringFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines functions on String values, including those corresponding to string concatenation
|
|
5
|
+
* and comparison operators in the KerML expression notation.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
public import ScalarValues::*;
|
|
9
|
+
|
|
10
|
+
function '+' specializes ScalarFunctions::'+' { in x: String[1]; in y:String[1]; return : String[1]; }
|
|
11
|
+
|
|
12
|
+
function Length{ in x: String[1]; return : Natural[1]; }
|
|
13
|
+
function Substring{ in x: String[1]; in lower: Integer[1]; in upper: Integer[1]; return : String[1]; }
|
|
14
|
+
|
|
15
|
+
function '<' specializes ScalarFunctions::'<' { in x: String[1]; in y: String[1]; return : Boolean[1]; }
|
|
16
|
+
function '>' specializes ScalarFunctions::'>' { in x: String[1]; in y: String[1]; return : Boolean[1]; }
|
|
17
|
+
function '<=' specializes ScalarFunctions::'<=' { in x: String[1]; in y: String[1]; return : Boolean[1]; }
|
|
18
|
+
function '>=' specializes ScalarFunctions::'>=' { in x: String[1]; in y: String[1]; return : Boolean[1]; }
|
|
19
|
+
|
|
20
|
+
function '==' specializes DataFunctions::'==' { in x: String[0..1]; in y: String[0..1]; return : Boolean[1]; }
|
|
21
|
+
|
|
22
|
+
function ToString specializes BaseFunctions::ToString { in x: String[1];
|
|
23
|
+
return : String[1] = x;
|
|
24
|
+
}
|
|
25
|
+
}
|
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
standard library package TrigFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines basic trigonometric functions on real numbers.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
public import ScalarValues::Real;
|
|
8
|
-
|
|
9
|
-
feature pi : Real;
|
|
10
|
-
inv piPrecision { RealFunctions::round(pi * 1E20) == 314159265358979323846.0 }
|
|
11
|
-
|
|
12
|
-
function deg { in theta_rad : Real[1];
|
|
13
|
-
return : Real[1] = theta_rad * 180 / pi;
|
|
14
|
-
}
|
|
15
|
-
function rad { in theta_deg : Real;
|
|
16
|
-
return : Real[1] = theta_deg * pi / 180;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
datatype UnitBoundedReal :> Real {
|
|
20
|
-
inv unitBound { -1.0 <= that & that <= 1.0 }
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function sin { in theta : Real[1]; return : UnitBoundedReal[1]; }
|
|
24
|
-
function cos { in theta : Real[1]; return : UnitBoundedReal[1]; }
|
|
25
|
-
function tan { in theta : Real[1];
|
|
26
|
-
return : Real = sin(theta) / cos(theta);
|
|
27
|
-
}
|
|
28
|
-
function cot { in theta : Real;
|
|
29
|
-
return : Real = cos(theta) / sin(theta);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function arcsin { in x : UnitBoundedReal[1]; return : Real[1]; }
|
|
33
|
-
function arccos { in x : UnitBoundedReal[1]; return : Real[1]; }
|
|
34
|
-
function arctan { in x : Real[1]; return : Real[1]; }
|
|
1
|
+
standard library package TrigFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines basic trigonometric functions on real numbers.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
public import ScalarValues::Real;
|
|
8
|
+
|
|
9
|
+
feature pi : Real;
|
|
10
|
+
inv piPrecision { RealFunctions::round(pi * 1E20) == 314159265358979323846.0 }
|
|
11
|
+
|
|
12
|
+
function deg { in theta_rad : Real[1];
|
|
13
|
+
return : Real[1] = theta_rad * 180 / pi;
|
|
14
|
+
}
|
|
15
|
+
function rad { in theta_deg : Real;
|
|
16
|
+
return : Real[1] = theta_deg * pi / 180;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
datatype UnitBoundedReal :> Real {
|
|
20
|
+
inv unitBound { -1.0 <= that & that <= 1.0 }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function sin { in theta : Real[1]; return : UnitBoundedReal[1]; }
|
|
24
|
+
function cos { in theta : Real[1]; return : UnitBoundedReal[1]; }
|
|
25
|
+
function tan { in theta : Real[1];
|
|
26
|
+
return : Real = sin(theta) / cos(theta);
|
|
27
|
+
}
|
|
28
|
+
function cot { in theta : Real;
|
|
29
|
+
return : Real = cos(theta) / sin(theta);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function arcsin { in x : UnitBoundedReal[1]; return : Real[1]; }
|
|
33
|
+
function arccos { in x : UnitBoundedReal[1]; return : Real[1]; }
|
|
34
|
+
function arctan { in x : Real[1]; return : Real[1]; }
|
|
35
35
|
}
|