@@ -436,16 +436,14 @@ public List<ExecuteResult> readOutputs(
436436 * @return If the machines are different: The corresponding separating word; otherwise: ""
437437 */
438438 public SeparatingWord separatingWord (CompactMealyMachineProxy mealy1 , CompactMealyMachineProxy mealy2 ) {
439- final Alphabet <String > alphabetProxy1 = mealy1 .createAlphabet ();
440- final Alphabet <String > alphabetProxy2 = mealy1 .createAlphabet ();
441- if (alphabetProxy1 .size () != alphabetProxy2 .size () || !alphabetProxy1 .containsAll (alphabetProxy2 )) {
442- throw new IllegalArgumentException ("The alphabets of the hypotheses are not identical!" );
443- }
439+ final Alphabet <String > alphabet1 = mealy1 .createAlphabet ();
440+ final Alphabet <String > alphabet2 = mealy2 .createAlphabet ();
441+ checkAlphabetsAreIdentical (alphabet1 , alphabet2 );
444442
445- final CompactMealy <String , String > mealyMachine1 = mealy1 .createMealyMachine (alphabetProxy1 );
446- final CompactMealy <String , String > mealyMachine2 = mealy2 .createMealyMachine (alphabetProxy2 );
443+ final CompactMealy <String , String > mealyMachine1 = mealy1 .createMealyMachine (alphabet1 );
444+ final CompactMealy <String , String > mealyMachine2 = mealy2 .createMealyMachine (alphabet2 );
447445
448- final Word <String > separatingWord = Automata .findSeparatingWord (mealyMachine1 , mealyMachine2 , alphabetProxy1 );
446+ final Word <String > separatingWord = Automata .findSeparatingWord (mealyMachine1 , mealyMachine2 , alphabet1 );
449447
450448 if (separatingWord != null ) {
451449 return new SeparatingWord (
@@ -469,25 +467,23 @@ public SeparatingWord separatingWord(CompactMealyMachineProxy mealy1, CompactMea
469467 */
470468 public CompactMealy <String , String > differenceTree (
471469 final CompactMealyMachineProxy mealyProxy1 ,
472- final CompactMealyMachineProxy mealyProxy2 ) {
473-
474- final Alphabet <String > alphabet = mealyProxy1 .createAlphabet ();
475- final Alphabet <String > alph2 = mealyProxy2 .createAlphabet ();
476- if (alphabet .size () != alph2 .size () || !alphabet .containsAll (alph2 )) {
477- throw new IllegalArgumentException ("The alphabets of the hypotheses are not identical!" );
478- }
470+ final CompactMealyMachineProxy mealyProxy2
471+ ) {
472+ final Alphabet <String > alphabet1 = mealyProxy1 .createAlphabet ();
473+ final Alphabet <String > alphabet2 = mealyProxy2 .createAlphabet ();
474+ checkAlphabetsAreIdentical (alphabet1 , alphabet2 );
479475
480- final CompactMealy <String , String > hyp1 = mealyProxy1 .createMealyMachine (alphabet );
481- final CompactMealy <String , String > hyp2 = mealyProxy2 .createMealyMachine (alphabet );
476+ final CompactMealy <String , String > hyp1 = mealyProxy1 .createMealyMachine (alphabet1 );
477+ final CompactMealy <String , String > hyp2 = mealyProxy2 .createMealyMachine (alphabet1 );
482478
483479 // the words where the output differs
484480 final Set <SeparatingWord > diffs = new HashSet <>();
485- findDifferences (hyp1 , hyp2 , alphabet , diffs );
486- findDifferences (hyp2 , hyp1 , alphabet , diffs );
481+ findDifferences (hyp1 , hyp2 , alphabet1 , diffs );
482+ findDifferences (hyp2 , hyp1 , alphabet1 , diffs );
487483
488484 // build tree
489485 // the tree is organized as an incomplete mealy machine
490- final CompactMealy <String , String > diffTree = new CompactMealy <>(alphabet );
486+ final CompactMealy <String , String > diffTree = new CompactMealy <>(alphabet1 );
491487 diffTree .addInitialState ();
492488
493489 for (final SeparatingWord diff : diffs ) {
@@ -518,8 +514,8 @@ public CompactMealy<String, String> differenceTree(
518514 }
519515
520516 // minimize the tree
521- final CompactMealy <String , String > target = new CompactMealy <>(alphabet );
522- Automata .minimize (diffTree , alphabet , target );
517+ final CompactMealy <String , String > target = new CompactMealy <>(alphabet1 );
518+ Automata .minimize (diffTree , alphabet1 , target );
523519
524520 return target ;
525521 }
@@ -574,4 +570,10 @@ private void checkRunningProcesses(User user, Long projectId) {
574570 }
575571 }
576572 }
573+
574+ private void checkAlphabetsAreIdentical (Alphabet <String > a1 , Alphabet <String > a2 ) {
575+ if (a1 .size () != a2 .size () || !a1 .containsAll (a2 )) {
576+ throw new IllegalArgumentException ("The alphabets of the hypotheses are not identical." );
577+ }
578+ }
577579}
0 commit comments