favu100 / b2program

READ-ONLY MIRROR of https://gitlab.cs.uni-duesseldorf.de/general/stups/b2program; DO NOT PUSH
5 stars 3 forks source link

Index out of bounds Exception #4

Closed leuschel closed 2 years ago

leuschel commented 2 years ago

For the model below I get this exception:

java -jar b2program/build/libs/B2Program-all-0.1.0-SNAPSHOT.jar java false -2147483648 2147483647 10 true true QueensWithEvents.mch

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:359) at java.base/java.util.ArrayList.get(ArrayList.java:427) at de.hhu.stups.codegenerator.generators.PredicateGenerator.transformPowNodeToRelationNode(PredicateGenerator.java:123) at de.hhu.stups.codegenerator.generators.PredicateGenerator.generateRelationOnRhs(PredicateGenerator.java:110) at de.hhu.stups.codegenerator.generators.PredicateGenerator.visitPredicateOperatorWithExprArgs(PredicateGenerator.java:96) at de.hhu.stups.codegenerator.generators.MachineGenerator.visitPredicateOperatorWithExprArgs(MachineGenerator.java:437) at de.hhu.stups.codegenerator.generators.MachineGenerator.visitPredicateOperatorWithExprArgs(MachineGenerator.java:75) at de.prob.parser.ast.visitors.generic.ParametrisedPredicateVisitor.visitPredicateNode(ParametrisedPredicateVisitor.java:17) at de.hhu.stups.codegenerator.generators.PredicateGenerator.lambda$visitPredicateOperatorNode$0(PredicateGenerator.java:82)

leuschel commented 2 years ago
MACHINE QueensWithEvents
CONSTANTS n
PROPERTIES
 n : NATURAL &
 n = 8
DEFINITIONS
      SET_PREF_TIME_OUT == 6000;
      SET_PREF_CLPFD == TRUE;
      SET_PREF_MAX_OPERATIONS == 93
VARIABLES queens
INVARIANT
  queens : (1..n) +-> (1..n)
INITIALISATION
  queens := {}
OPERATIONS
  Solve(solution)= SELECT
        solution : POW((1 .. n) * (1 .. n))
      & solution : perm(1 .. n)
      & 
        !(q1,q2).(
         (
          q1 : 1 .. n
          &
          q2 : 2 .. n
          &
          q2 > q1
         )
         =>
         (
          (solution(q1) + q2) - q1 /= solution(q2)
          &
          (solution(q1) - q2) + q1 /= solution(q2)
         )
        )
      & 
        !x.(
         x : dom(queens)
         =>
         solution(x) = queens(x)
        )
  THEN
     queens := solution
  END

END
favu100 commented 2 years ago

This issue is solved now