From 3f5aaab5025b8eb243f414b1c789085327df04f4 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Wed, 20 Mar 2019 16:09:09 +0100 Subject: Fault tree transformation for partial models WIP --- .../cft2ft/.Cft2FtTransformation.xtendbin | Bin 2825 -> 2825 bytes .../cft2ft/.EventCollection.xtendbin | Bin 7022 -> 7022 bytes .../cft2ft/.EventMaterializer.xtendbin | Bin 11808 -> 11938 bytes .../cft2ft/.FaultTreeBuilder.xtendbin | Bin 4029 -> 4029 bytes .../faulttree/transformation/cft2ft/.gitignore | 8 +++++ .../transformation/cft2ft/EventMaterializer.java | 4 ++- .../ecore2cft/.ComponentFaultTreeTrace.xtendbin | Bin 5009 -> 5530 bytes .../ecore2cft/.ComponentInstanceTrace.xtendbin | Bin 5190 -> 5932 bytes .../ecore2cft/.ComponentNameGenerator.xtendbin | Bin 3472 -> 3472 bytes .../ecore2cft/.Ecore2CftTransformation.xtendbin | Bin 3431 -> 3431 bytes .../transformation/ecore2cft/.InputTrace.xtendbin | Bin 3849 -> 4202 bytes .../ecore2cft/.LookupHandler.xtendbin | Bin 5169 -> 5169 bytes .../ecore2cft/.MappingHandler.xtendbin | Bin 6876 -> 6876 bytes .../ecore2cft/.MappingQueries.xtendbin | Bin 4833 -> 4833 bytes .../faulttree/transformation/ecore2cft/.gitignore | 16 +++++++++ .../ecore2cft/ComponentFaultTreeTrace.java | 12 ++++++- .../ecore2cft/ComponentInstanceTrace.java | 16 +++++++-- .../transformation/ecore2cft/InputTrace.java | 10 +++++- .../ft2galileo/.Ft2GalileoTransformation.xtendbin | Bin 4761 -> 4794 bytes .../faulttree/transformation/ft2galileo/.gitignore | 2 ++ .../ft2galileo/Ft2GalileoTransformation.java | 21 ++++++++---- .../solver/.ReliabilityResult.xtendbin | Bin 5435 -> 5435 bytes .../solver/.StormDftConfiguration.xtendbin | Bin 4311 -> 4311 bytes .../solver/.StormDftHandler.xtendbin | Bin 13615 -> 13570 bytes .../transformation/solver/.StormDftSolver.xtendbin | Bin 4801 -> 4801 bytes .../faulttree/transformation/solver/.gitignore | 11 ++++++ .../transformation/solver/StormDftHandler.java | 37 +++++---------------- 27 files changed, 96 insertions(+), 41 deletions(-) (limited to 'Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree') diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.Cft2FtTransformation.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.Cft2FtTransformation.xtendbin index 226e6227..f68d0464 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.Cft2FtTransformation.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.Cft2FtTransformation.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.EventCollection.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.EventCollection.xtendbin index 54ba3d09..6aebfa85 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.EventCollection.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.EventCollection.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.EventMaterializer.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.EventMaterializer.xtendbin index 175ae3f1..323f40b2 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.EventMaterializer.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.EventMaterializer.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.FaultTreeBuilder.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.FaultTreeBuilder.xtendbin index db3a7e73..45b228d3 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.FaultTreeBuilder.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.FaultTreeBuilder.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.gitignore b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.gitignore index 75154a4c..058cff19 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.gitignore +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/.gitignore @@ -6,3 +6,11 @@ /.FaultTreeBuilder.java._trace /.FaultModelBuilder.java._trace /.EventCollection.java._trace +/.Cft2FtTransformation.xtendbin +/.EventCollection.xtendbin +/.EventMaterializer.xtendbin +/.FaultTreeBuilder.xtendbin +/Cft2FtTransformation.java +/EventCollection.java +/EventMaterializer.java +/FaultTreeBuilder.java diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/EventMaterializer.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/EventMaterializer.java index ac1fc209..98a82b7d 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/EventMaterializer.java +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/cft2ft/EventMaterializer.java @@ -22,6 +22,7 @@ import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.Gate; import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.KOfMGate; import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.OrGate; import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.RandomEvent; +import hu.bme.mit.inf.dslreasoner.faulttree.model.util.CftExtensions; import hu.bme.mit.inf.dslreasoner.faulttree.transformation.cft2ft.EventCollection; import java.util.LinkedHashSet; import java.util.Map; @@ -416,7 +417,8 @@ public class EventMaterializer { final EventCollection.Builder builder = EventCollection.builder(); EList _incomingConnections = input.getIncomingConnections(); for (final Connection connection : _incomingConnections) { - { + boolean _isCurrentlyConnected = CftExtensions.isCurrentlyConnected(connection); + if (_isCurrentlyConnected) { final Event materializedEvent = this.getOrMaterialize(connection.getOutput()); builder.add(materializedEvent); } diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentFaultTreeTrace.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentFaultTreeTrace.xtendbin index f705fefe..59a21d5c 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentFaultTreeTrace.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentFaultTreeTrace.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentInstanceTrace.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentInstanceTrace.xtendbin index bab76345..0a5c81fe 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentInstanceTrace.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentInstanceTrace.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentNameGenerator.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentNameGenerator.xtendbin index 257bfc56..87965646 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentNameGenerator.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.ComponentNameGenerator.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.Ecore2CftTransformation.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.Ecore2CftTransformation.xtendbin index a1339a18..cd930545 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.Ecore2CftTransformation.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.Ecore2CftTransformation.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.InputTrace.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.InputTrace.xtendbin index ba19d0fb..2f779ecb 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.InputTrace.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.InputTrace.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.LookupHandler.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.LookupHandler.xtendbin index 1e8612b2..93bad7e0 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.LookupHandler.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.LookupHandler.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingHandler.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingHandler.xtendbin index ebe80f2e..fde76cfd 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingHandler.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingHandler.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingQueries.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingQueries.xtendbin index 03bd16f8..4754c634 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingQueries.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.MappingQueries.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.gitignore b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.gitignore index 33bb70d4..377aa872 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.gitignore +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/.gitignore @@ -7,3 +7,19 @@ /.CftTransformation.java._trace /.Ecore2CftTransformation.java._trace /.ComponentNameGenerator.java._trace +/.ComponentFaultTreeTrace.xtendbin +/.ComponentInstanceTrace.xtendbin +/.ComponentNameGenerator.xtendbin +/.Ecore2CftTransformation.xtendbin +/.InputTrace.xtendbin +/.LookupHandler.xtendbin +/.MappingHandler.xtendbin +/.MappingQueries.xtendbin +/ComponentFaultTreeTrace.java +/ComponentInstanceTrace.java +/ComponentNameGenerator.java +/Ecore2CftTransformation.java +/InputTrace.java +/LookupHandler.java +/MappingHandler.java +/MappingQueries.java diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java index 46e711d9..ddcf9036 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentFaultTreeTrace.java @@ -3,6 +3,7 @@ package hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.CftFactory; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentFaultTree; +import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Modality; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentInstanceTrace; import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentNameGenerator; @@ -24,13 +25,17 @@ public class ComponentFaultTreeTrace { private final Map componentInstancesMap = CollectionLiterals.newHashMap(); public ComponentInstanceTrace instantiateComponent(final IPatternMatch patternMatch, final ComponentDefinition componenDefinition) { + return this.instantiateComponent(patternMatch, componenDefinition, Modality.MUST, false); + } + + public ComponentInstanceTrace instantiateComponent(final IPatternMatch patternMatch, final ComponentDefinition componenDefinition, final Modality exists, final boolean allowMultiple) { ComponentInstanceTrace _xblockexpression = null; { boolean _containsKey = this.componentInstancesMap.containsKey(patternMatch); if (_containsKey) { throw new IllegalArgumentException(("Already instantiated component for match: " + patternMatch)); } - final ComponentInstanceTrace componentTrace = new ComponentInstanceTrace(this.componentFaultTree, componenDefinition, this.nameGenerator); + final ComponentInstanceTrace componentTrace = new ComponentInstanceTrace(this.componentFaultTree, componenDefinition, this.nameGenerator, exists, allowMultiple); this.componentInstancesMap.put(patternMatch, componentTrace); _xblockexpression = componentTrace; } @@ -53,6 +58,11 @@ public class ComponentFaultTreeTrace { " instead"); throw new IllegalArgumentException(_plus_1); } + boolean _appearsExactlyOnce = trace.appearsExactlyOnce(); + boolean _not = (!_appearsExactlyOnce); + if (_not) { + throw new IllegalArgumentException("Top level must appear in the fault tree exactly once"); + } this.componentFaultTree.setTopEvent(IterableExtensions.head(outputs)); } diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.java index 840f501d..4034bdf3 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.java +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/ComponentInstanceTrace.java @@ -7,7 +7,9 @@ import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentFaultTree; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.EventDeclaration; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.InputEvent; +import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Modality; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; +import hu.bme.mit.inf.dslreasoner.faulttree.model.util.CftExtensions; import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.ComponentNameGenerator; import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.InputTrace; import java.util.Map; @@ -21,9 +23,11 @@ public class ComponentInstanceTrace { private final Map outputEventsMap; - protected ComponentInstanceTrace(final ComponentFaultTree faultTree, final ComponentDefinition componentDefinition, final ComponentNameGenerator nameGenerator) { + protected ComponentInstanceTrace(final ComponentFaultTree faultTree, final ComponentDefinition componentDefinition, final ComponentNameGenerator nameGenerator, final Modality exists, final boolean multipleAllowed) { this.componentInstance.setComponentDefinition(componentDefinition); this.componentInstance.setName(nameGenerator.nextName(componentDefinition)); + this.componentInstance.setExists(exists); + this.componentInstance.setMultipleAllowed(multipleAllowed); this.inputEventsMap = Maps.newHashMapWithExpectedSize(componentDefinition.getInputEvents().size()); EList _inputEvents = componentDefinition.getInputEvents(); for (final InputEvent inputEvent : _inputEvents) { @@ -48,6 +52,10 @@ public class ComponentInstanceTrace { } public void assign(final EventDeclaration inputEvent, final ComponentInstanceTrace sourceComponent, final EventDeclaration outputEvent) { + this.assign(inputEvent, sourceComponent, outputEvent, Modality.MUST); + } + + public void assign(final EventDeclaration inputEvent, final ComponentInstanceTrace sourceComponent, final EventDeclaration outputEvent, final Modality exists) { final InputTrace inputTrace = this.inputEventsMap.get(inputEvent); if ((inputTrace == null)) { throw new IllegalArgumentException(("Unknown input: " + inputEvent)); @@ -56,10 +64,14 @@ public class ComponentInstanceTrace { if ((output == null)) { throw new IllegalArgumentException(("Unknown output: " + outputEvent)); } - inputTrace.assign(output); + inputTrace.assign(output, exists); } protected EList getOutputs() { return this.componentInstance.getOutputs(); } + + protected boolean appearsExactlyOnce() { + return CftExtensions.appearsExactlyOnce(this.componentInstance); + } } diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/InputTrace.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/InputTrace.java index c12f2bae..2b30566f 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/InputTrace.java +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ecore2cft/InputTrace.java @@ -5,7 +5,9 @@ import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Component; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Connection; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Input; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.InputEvent; +import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Modality; import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.Output; +import hu.bme.mit.inf.dslreasoner.faulttree.model.util.CftExtensions; import java.util.Map; import org.eclipse.emf.common.util.EList; import org.eclipse.xtext.xbase.lib.CollectionLiterals; @@ -22,14 +24,20 @@ public class InputTrace { _inputs.add(this.input); } - public void assign(final Output output) { + public void assign(final Output output, final Modality exists) { final Connection connection = this.connectionsMap.get(output); if ((connection == null)) { final Connection newConnection = CftFactory.eINSTANCE.createConnection(); newConnection.setOutput(output); + newConnection.setExists(exists); EList _incomingConnections = this.input.getIncomingConnections(); _incomingConnections.add(newConnection); this.connectionsMap.put(output, newConnection); + } else { + boolean _isMoreConcreteThan = CftExtensions.isMoreConcreteThan(exists, connection.getExists()); + if (_isMoreConcreteThan) { + connection.setExists(exists); + } } } } diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/.Ft2GalileoTransformation.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/.Ft2GalileoTransformation.xtendbin index 9fe75a0f..25ddc417 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/.Ft2GalileoTransformation.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/.Ft2GalileoTransformation.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/.gitignore b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/.gitignore index 3f932890..f4610b04 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/.gitignore +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/.gitignore @@ -1 +1,3 @@ /.Ft2GalileoTransformation.java._trace +/.Ft2GalileoTransformation.xtendbin +/Ft2GalileoTransformation.java diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.java index e900c62a..8748825d 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.java +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.java @@ -19,18 +19,19 @@ import org.eclipse.xtend2.lib.StringConcatenationClient; public class Ft2GalileoTransformation { public CharSequence toGalileo(final FaultTree faultTree) { StringConcatenation _builder = new StringConcatenation(); - _builder.append("toplevel "); + _builder.append("toplevel \""); String _name = faultTree.getTopEvent().getName(); _builder.append(_name); - _builder.append(";"); + _builder.append("\";"); _builder.newLineIfNotEmpty(); { EList _events = faultTree.getEvents(); for(final RandomEvent event : _events) { + _builder.append("\""); String _name_1 = event.getName(); _builder.append(_name_1); - _builder.append(" "); - StringConcatenationClient _defineEvent = this.defineEvent(event); + _builder.append("\" "); + Object _defineEvent = this.defineEvent(event); _builder.append(_defineEvent); _builder.append(";"); _builder.newLineIfNotEmpty(); @@ -39,8 +40,12 @@ public class Ft2GalileoTransformation { return _builder; } - protected StringConcatenationClient _defineEvent(final BasicEvent basicEvent) { - return this.defineDistribution(basicEvent.getDistribution()); + protected Object _defineEvent(final BasicEvent basicEvent) { + StringConcatenation _builder = new StringConcatenation(); + StringConcatenationClient _defineDistribution = this.defineDistribution(basicEvent.getDistribution()); + _builder.append(_defineDistribution); + _builder.append(" dorm=0.0"); + return _builder; } protected StringConcatenationClient _defineDistribution(final ConstantDistribution distribution) { @@ -87,8 +92,10 @@ public class Ft2GalileoTransformation { } else { _builder.appendImmediate(" ", ""); } + _builder.append("\""); String _name = input.getName(); _builder.append(_name); + _builder.append("\""); } } } @@ -138,7 +145,7 @@ public class Ft2GalileoTransformation { throw new IllegalArgumentException(("Unknown random even: " + randomEvent)); } - protected StringConcatenationClient defineEvent(final RandomEvent basicEvent) { + protected Object defineEvent(final RandomEvent basicEvent) { if (basicEvent instanceof BasicEvent) { return _defineEvent((BasicEvent)basicEvent); } else if (basicEvent instanceof Gate) { diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.ReliabilityResult.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.ReliabilityResult.xtendbin index 57c4608d..552c946a 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.ReliabilityResult.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.ReliabilityResult.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftConfiguration.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftConfiguration.xtendbin index f5cb52f4..a3f9c647 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftConfiguration.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftConfiguration.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftHandler.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftHandler.xtendbin index 5dad0728..d7f66fd0 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftHandler.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftHandler.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftSolver.xtendbin b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftSolver.xtendbin index abd8a501..b9fdf395 100644 Binary files a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftSolver.xtendbin and b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.StormDftSolver.xtendbin differ diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.gitignore b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.gitignore index 59cc8fe8..8a74c101 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.gitignore +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/.gitignore @@ -7,3 +7,14 @@ /.StormDftException.java._trace /.ReliabilityModelSolution.java._trace /.ReliabilityResult.java._trace +/.ReliabilityResult.xtendbin +/.StormDftConfiguration.xtendbin +/.StormDftHandler.xtendbin +/.StormDftSolver.xtendbin +/ApproximationHeuristic.java +/FtAnalysisObjective.java +/ReliabilityResult.java +/StormDftConfiguration.java +/StormDftException.java +/StormDftHandler.java +/StormDftSolver.java diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.java index 003d9cc5..46127425 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.java +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.java @@ -16,15 +16,11 @@ import java.io.InputStreamReader; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; -import jnr.constants.platform.Signal; -import org.apache.commons.lang.SystemUtils; import org.eclipse.xtend2.lib.StringConcatenation; import org.eclipse.xtext.xbase.lib.CollectionLiterals; -import org.eclipse.xtext.xbase.lib.Conversions; import org.eclipse.xtext.xbase.lib.Exceptions; import org.eclipse.xtext.xbase.lib.Extension; import org.eclipse.xtext.xbase.lib.Functions.Function0; -import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.InputOutput; import org.eclipse.xtext.xbase.lib.IterableExtensions; @@ -60,17 +56,11 @@ public class StormDftHandler { private static final Pattern RESULT_PATTERN = Pattern.compile(StormDftHandler.RESULT_REGEX); - private static final int SIGNAL_EXIT_VALUE_OFFSET = new Function0() { - public Integer apply() { - int _xifexpression = (int) 0; - if (SystemUtils.IS_OS_SOLARIS) { - _xifexpression = 0; - } else { - _xifexpression = 0x80; - } - return _xifexpression; - } - }.apply().intValue(); + private static final int SIGNAL_EXIT_VALUE_OFFSET = 0x80; + + private static final int SIGXCPU = 24; + + private static final int SIGXFSZ = 25; private static final int STORM_GENERAL_ERROR = ((-1) & 0xff); @@ -305,9 +295,7 @@ public class StormDftHandler { _matched=true; } if (!_matched) { - int _intValue = Signal.SIGXCPU.intValue(); - int _plus = (StormDftHandler.SIGNAL_EXIT_VALUE_OFFSET + _intValue); - if (Objects.equal(exitValue, _plus)) { + if (Objects.equal(exitValue, (StormDftHandler.SIGNAL_EXIT_VALUE_OFFSET + StormDftHandler.SIGXCPU))) { _matched=true; } } @@ -320,9 +308,7 @@ public class StormDftHandler { _matched=true; } if (!_matched) { - int _intValue_1 = Signal.SIGXFSZ.intValue(); - int _plus_1 = (StormDftHandler.SIGNAL_EXIT_VALUE_OFFSET + _intValue_1); - if (Objects.equal(exitValue, _plus_1)) { + if (Objects.equal(exitValue, (StormDftHandler.SIGNAL_EXIT_VALUE_OFFSET + StormDftHandler.SIGXFSZ))) { _matched=true; } } @@ -334,14 +320,7 @@ public class StormDftHandler { { if ((exitValue > StormDftHandler.SIGNAL_EXIT_VALUE_OFFSET)) { final int signalNumber = (exitValue - StormDftHandler.SIGNAL_EXIT_VALUE_OFFSET); - final Function1 _function = (Signal it) -> { - int _intValue_2 = it.intValue(); - return Boolean.valueOf((_intValue_2 == signalNumber)); - }; - final Signal signal = IterableExtensions.findFirst(((Iterable)Conversions.doWrapArray(Signal.values())), _function); - if ((signal != null)) { - throw new StormDftException(((("Storm unexpectedly killed by signal " + signal) + ": ") + error)); - } + throw new StormDftException(((("Storm unexpectedly killed by signal " + Integer.valueOf(signalNumber)) + ": ") + error)); } throw new StormDftException(((("Storm unexpectedly exit with status " + Integer.valueOf(exitValue)) + ": ") + error)); } -- cgit v1.2.3-54-g00ecf