Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion prism/src/explicit/DTMCEmbeddedSimple.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.util.*;
import java.util.Map.Entry;

import common.iterable.FunctionalPrimitiveIterable;
import explicit.rewards.MCRewards;
import parser.State;
import parser.Values;
Expand Down Expand Up @@ -86,7 +87,7 @@ public int getNumInitialStates()
return ctmc.getNumInitialStates();
}

public Iterable<Integer> getInitialStates()
public FunctionalPrimitiveIterable.OfInt getInitialStates()
{
return ctmc.getInitialStates();
}
Expand Down
3 changes: 2 additions & 1 deletion prism/src/explicit/DTMCFromMDPAndMDStrategy.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.util.*;
import java.util.Map.Entry;

import common.iterable.FunctionalPrimitiveIterable;
import explicit.rewards.MCRewards;
import parser.State;
import parser.Values;
Expand Down Expand Up @@ -76,7 +77,7 @@ public int getNumInitialStates()
return mdp.getNumInitialStates();
}

public Iterable<Integer> getInitialStates()
public FunctionalPrimitiveIterable.OfInt getInitialStates()
{
return mdp.getInitialStates();
}
Expand Down
3 changes: 2 additions & 1 deletion prism/src/explicit/DTMCFromMDPMemorylessAdversary.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import java.util.List;
import java.util.Map.Entry;

import common.iterable.FunctionalPrimitiveIterable;
import common.iterable.Reducible;
import parser.State;
import parser.Values;
Expand Down Expand Up @@ -80,7 +81,7 @@ public int getNumInitialStates()
return mdp.getNumInitialStates();
}

public Iterable<Integer> getInitialStates()
public FunctionalPrimitiveIterable.OfInt getInitialStates()
{
return mdp.getInitialStates();
}
Expand Down
6 changes: 4 additions & 2 deletions prism/src/explicit/DTMCSimple.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import java.util.Map.Entry;
import java.io.*;

import common.iterable.FunctionalPrimitiveIterator;
import common.iterable.Reducible;
import prism.PrismException;

/**
Expand Down Expand Up @@ -213,9 +215,9 @@ public int getNumTransitions(int s)

/** Get an iterator over the successors of state s */
@Override
public Iterator<Integer> getSuccessorsIterator(final int s)
public FunctionalPrimitiveIterator.OfInt getSuccessorsIterator(final int s)
{
return trans.get(s).getSupport().iterator();
return Reducible.unboxInt(trans.get(s).getSupport()).iterator();
}

@Override
Expand Down
6 changes: 4 additions & 2 deletions prism/src/explicit/DTMCSparse.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@
import java.util.function.Function;

import common.IterableStateSet;
import common.iterable.FunctionalPrimitiveIterator;
import common.iterable.IterableArray;
import common.iterable.PrimitiveIterable;
import explicit.rewards.MCRewards;
import prism.PrismException;
Expand Down Expand Up @@ -151,9 +153,9 @@ public int getNumTransitions(int state)
}

@Override
public OfInt getSuccessorsIterator(final int state)
public FunctionalPrimitiveIterator.OfInt getSuccessorsIterator(final int state)
{
return Arrays.stream(columns, rows[state], rows[state+1]).iterator();
return new IterableArray.OfInt(columns, rows[state], rows[state+1]).iterator();
}

@Override
Expand Down
5 changes: 3 additions & 2 deletions prism/src/explicit/DTMCUniformisedSimple.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import java.util.Map;
import java.util.Map.Entry;

import common.iterable.FunctionalPrimitiveIterable;
import parser.State;
import parser.Values;
import prism.PrismException;
Expand Down Expand Up @@ -98,7 +99,7 @@ public int getNumInitialStates()
return ctmc.getNumInitialStates();
}

public Iterable<Integer> getInitialStates()
public FunctionalPrimitiveIterable.OfInt getInitialStates()
{
return ctmc.getInitialStates();
}
Expand All @@ -120,7 +121,7 @@ public int getNumDeadlockStates()
}

@Override
public Iterable<Integer> getDeadlockStates()
public FunctionalPrimitiveIterable.OfInt getDeadlockStates()
{
return ctmc.getDeadlockStates();
}
Expand Down
10 changes: 6 additions & 4 deletions prism/src/explicit/Model.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
import java.util.function.IntPredicate;

import common.IteratorTools;
import common.iterable.FunctionalPrimitiveIterable;
import common.iterable.FunctionalPrimitiveIterator;
import explicit.graphviz.Decorator;
import parser.State;
import parser.Values;
Expand Down Expand Up @@ -77,7 +79,7 @@ public interface Model<Value>
/**
* Get iterator over initial state list.
*/
public Iterable<Integer> getInitialStates();
public FunctionalPrimitiveIterable.OfInt getInitialStates();

/**
* Get the index of the first initial state
Expand All @@ -101,7 +103,7 @@ public interface Model<Value>
* Get iterator over states that are/were deadlocks.
* (Such states may have been fixed at build-time by adding self-loops)
*/
public Iterable<Integer> getDeadlockStates();
public FunctionalPrimitiveIterable.OfInt getDeadlockStates();

/**
* Get list of states that are/were deadlocks.
Expand Down Expand Up @@ -184,7 +186,7 @@ public default int getNumTransitions()
*/
public default int getNumTransitions(int s)
{
return Math.toIntExact(IteratorTools.count(getSuccessorsIterator(s)));
return Math.toIntExact(getSuccessorsIterator(s).count());
}

/**
Expand All @@ -210,7 +212,7 @@ public default long getNumTransitions(PrimitiveIterator.OfInt states)
* from {@code getSuccessors}, ensuring that there are no
* duplicates.
*/
public default Iterator<Integer> getSuccessorsIterator(int s)
public default FunctionalPrimitiveIterator.OfInt getSuccessorsIterator(int s)
{
SuccessorsIterator successors = getSuccessors(s);
return successors.distinct();
Expand Down
10 changes: 6 additions & 4 deletions prism/src/explicit/ModelExplicit.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
import java.util.TreeMap;
import java.util.TreeSet;

import common.iterable.FunctionalPrimitiveIterable;
import common.iterable.Reducible;
import parser.State;
import parser.Values;
import parser.VarList;
Expand Down Expand Up @@ -279,9 +281,9 @@ public int getNumInitialStates()
}

@Override
public Iterable<Integer> getInitialStates()
public FunctionalPrimitiveIterable.OfInt getInitialStates()
{
return initialStates;
return Reducible.unboxInt(initialStates);
}

@Override
Expand All @@ -303,9 +305,9 @@ public int getNumDeadlockStates()
}

@Override
public Iterable<Integer> getDeadlockStates()
public FunctionalPrimitiveIterable.OfInt getDeadlockStates()
{
return deadlocks;
return Reducible.unboxInt(deadlocks);
}

@Override
Expand Down
19 changes: 5 additions & 14 deletions prism/src/explicit/STPGAbstrSimple.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,11 @@
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.Map.Entry;

import common.IterableStateSet;
import common.iterable.*;
import explicit.rewards.STPGRewards;
import prism.PrismException;
import prism.PrismLog;
Expand Down Expand Up @@ -285,17 +281,12 @@ public int getNumTransitions()
}

@Override
public Iterator<Integer> getSuccessorsIterator(final int s)
public FunctionalPrimitiveIterator.OfInt getSuccessorsIterator(final int s)
{
// Need to build set to avoid duplicates
// So not necessarily the fastest method to access successors
HashSet<Integer> succs = new HashSet<Integer>();
for (DistributionSet<Value> distrs : trans.get(s)) {
for (Distribution<Value> distr : distrs) {
succs.addAll(distr.getSupport());
}
}
return succs.iterator();
FunctionalIterable<Integer> support = Reducible.concat(trans.get(s)).flatMap(Distribution::getSupport).distinct();
return Reducible.unboxInt(support.iterator());
}

@Override
Expand Down
11 changes: 7 additions & 4 deletions prism/src/explicit/SubNondetModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@
import java.util.Set;

import common.IterableStateSet;
import common.iterable.FunctionalPrimitiveIterable;
import common.iterable.FunctionalPrimitiveIterator;
import common.iterable.Reducible;
import parser.State;
import parser.Values;
import parser.VarList;
Expand Down Expand Up @@ -99,14 +102,14 @@ public int getNumInitialStates()
}

@Override
public Iterable<Integer> getInitialStates()
public FunctionalPrimitiveIterable.OfInt getInitialStates()
{
List<Integer> is = new ArrayList<Integer>();
List<Integer> is = new ArrayList<>();
for (int i = initialStates.nextSetBit(0); i >= 0; i = initialStates.nextSetBit(i + 1)) {
is.add(translateState(i));
}

return is;
return Reducible.unboxInt(is);
}

@Override
Expand All @@ -128,7 +131,7 @@ public int getNumDeadlockStates()
}

@Override
public Iterable<Integer> getDeadlockStates()
public FunctionalPrimitiveIterable.OfInt getDeadlockStates()
{
throw new UnsupportedOperationException();
}
Expand Down
Loading