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

de.uni.freiburg.iig.telematik.jagal.ts.labeled.LabeledTransitionSystem 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.labeled;

import java.util.Collection;

import de.invation.code.toval.validate.Validate;
import de.uni.freiburg.iig.telematik.jagal.ts.Event;
import de.uni.freiburg.iig.telematik.jagal.ts.exception.StateNotFoundException;
import de.uni.freiburg.iig.telematik.jagal.ts.labeled.abstr.AbstractLabeledTransitionSystem;
import de.uni.freiburg.iig.telematik.jagal.ts.labeled.exception.EventNotFoundException;

public class LabeledTransitionSystem extends AbstractLabeledTransitionSystem {

	private static final long serialVersionUID = -7254836871349786579L;

	public LabeledTransitionSystem() {
		super();
	}
	
	public LabeledTransitionSystem(String name) {
		super(name);
	}
	
	public LabeledTransitionSystem(Collection states) {
		super(states);
	}
	
	public LabeledTransitionSystem(String name, Collection states) {
		super(name, states);
	}
	
	public LabeledTransitionSystem(Collection states, Collection events) {
		super(states, events);
	}
	
	public LabeledTransitionSystem(String name, Collection states, Collection events) {
		super(name, states, events);
	}
	
	@Override
	protected LabeledTransitionRelation createNewEdge(LTSState sourceVertex, LTSState targetVertex) {
		return new LabeledTransitionRelation(sourceVertex, targetVertex);
	}

	@Override
	public LTSState createNewState(String name, Object element) {
		Validate.notNull(name);
		return new LTSState(name, element);
	}

	@Override
	public LabeledTransitionRelation createNewTransitionRelation(LTSState sourceState, LTSState targetState) {
		Validate.notNull(sourceState);
		Validate.notNull(targetState);
		return new LabeledTransitionRelation(sourceState, targetState);
	}

	@Override
	public LabeledTransitionRelation createNewTransitionRelation(String sourceStateName, String targetStateName, String eventName) throws EventNotFoundException, StateNotFoundException {
		validateState(sourceStateName);
		validateState(targetStateName);
		validateEvent(eventName);
		return new LabeledTransitionRelation(getState(sourceStateName), getState(targetStateName), getEvent(eventName));
	}

	@Override
	public Event createNewEvent(String name, String label) {
		Validate.notNull(name);
		Validate.notNull(label);
		return new Event(name, label);
	}

	@Override
	public LabeledTransitionSystem createNewInstance() {
		return new LabeledTransitionSystem();
	}
	
	
	
	@Override
	public LabeledTransitionSystem clone() {
		return (LabeledTransitionSystem) super.clone();
	}

	public static void main(String[] args) throws Exception{
		LabeledTransitionSystem ts = new LabeledTransitionSystem();
		ts.addState("s0");
		ts.addState("s1");
		ts.addState("s2");
		ts.addState("s3");
		ts.addState("s4");
		ts.addState("s5");
		ts.addEvent("a");
		ts.addEvent("b");
		ts.addEvent("c");
		ts.addEvent("d");
		ts.addEvent("e");
		ts.addEvent("f");
		ts.addStartState("s0");
		ts.addEndState("s3");
		ts.addEndState("s4");
		ts.addRelation("s0", "s2", "a");
		ts.addRelation("s2", "s3", "b");
		ts.addRelation("s0", "s1", "f");
		ts.addRelation("s1", "s4", "c");
		ts.addRelation("s4", "s5", "d");
		ts.addRelation("s5", "s4", "e");
		
//		String[] sequence1 = {"a", "b"};
//		System.out.println(ts.acceptsSequence(sequence1));
		
		System.out.println(ts.isDFA());
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy