Closed sprocter closed 6 years ago
FYI: There's now proposed syntax for the configurator specification in the .properties file in #11
## Configurator specification
## Choicepoints can be uniquely identified by their type and instance-model path, so that's what we
# 1. Type of Configurator (Currently supported: EqConfigurator, NeqConfigurator)
# 2. Name of the choicepoint (SubcompChoice: Just the instance path. PropertyValues: Path-Qualified Property Name)
# =
# 3. Name of the choicepoint (SubcompChoice: Just the instance path. PropertyValues: Path-Qualified Property Name)
EqConfigurator-scs.dev1=scs.dev2
All the restrictions I can come up with are basically tests of set membership -- ie, if choicepoint X has value a, then choicepoint Y should or should not have value b.
By building varying levels of syntactic sugar on top of this, there are six kinds of restrictions I think we should support. All examples assume two choicepoints, X and Y, each with a type of ℕ:
One thing to think about is sets on the left hand side -- it's possible that users would want this functionality. We'll probably want to "flatten" it to only allow single elements on the LHS (so enforcement can be done using a map) but we can still expose the sugared syntax to the user.
Creating part of the large, synthetic model I'd like to use for an experiment requires changing multiple choicepoints to the same value. This is supported in ATSV using configurators, but it's not currently specifiable in the language.
Here's a MWE model:
What I'd like to be able to do is somehow specify that whatever extension of
sanboxbus.i
(ie, eithersandboxbus.ext1
orsandboxbus.ext2
) gets picked for one device must be selected for the other.Potentially useful, and also immediately encodable in ATSV's configurators, would be inequality (aka uniqueness).