All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.uni.freiburg.iig.telematik.jagal.ts.util.TSUtils Maven / Gradle / Ivy

Go to download

JAGAL provides implementations for directed graphs (weighted and unweighted) and various types of transition systems as well as utils for graph traversal and modification.

The newest version!
package de.uni.freiburg.iig.telematik.jagal.ts.util;

import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

import de.uni.freiburg.iig.telematik.jagal.ts.abstr.AbstractState;
import de.uni.freiburg.iig.telematik.jagal.ts.abstr.AbstractTransitionRelation;
import de.uni.freiburg.iig.telematik.jagal.ts.labeled.LTSState;
import de.uni.freiburg.iig.telematik.jagal.ts.labeled.abstr.AbstractEvent;
import de.uni.freiburg.iig.telematik.jagal.ts.labeled.abstr.AbstractLTSState;
import de.uni.freiburg.iig.telematik.jagal.ts.labeled.abstr.AbstractLabeledTransitionRelation;


public class TSUtils {
	
	public static  boolean haveSameRelations(S s1, S s2){
		return s1.getIncomingEvents().equals(s2.getIncomingEvents()) && s1.getOutgoingEvents().equals(s2.getOutgoingEvents());
	}
	
	public static , O> Set getStates(Collection> relations){
		return getStates(new HashSet>(relations));
	}
	
	public static , O> Set getStates(Set> relations){
		Set result = new HashSet<>();
		for(AbstractTransitionRelation relation: relations){
			result.add(relation.getSource());
			result.add(relation.getTarget());
		}
		return result;
	}
	
	public static , O> Set> convert(Set> relations){
		Set> result = new HashSet<>();
		for(AbstractLabeledTransitionRelation relation: relations){
			result.add((AbstractTransitionRelation) relation);
		}
		return result;
	}

}