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

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