Reading project file program.prj... Running the test... Testing the evaluator join( ->A 3 B, ->B 2 C ) new Exp ===================== ClassName A ClassName B ->A 3 B new Exp ===================== ClassName A ->B 2 C new Exp ===================== ClassName B exists( X ) join( ->A X, <-X B ) new Exp ===================== join( ->A X, <-X B ) new Exp ===================== ClassName A ClassName X ClassName B ->A X new Exp ===================== ClassName A <-X B new Exp ===================== ClassName X ClassName B ->X<-A*B new Exp ===================== ClassName A ClassName B =>X<=A B new Exp ===================== ClassName B seq A( B, C ) new Exp ===================== exists( R1 ) join( =>X<=A edge e R1, =>X<=R1 B ) new Exp ===================== join( =>X<=A edge e R1, =>X<=R1 B ) new Exp ===================== ClassName R1 ClassName B =>X<=A edge e R1 new Exp ===================== ClassName R1 =>X<=R1 B new Exp ===================== ClassName B start of Equation-object +++++++++++++ ->A B new Exp ===================== ClassName A =>X<=A B new Exp ===================== ClassName B start of Equation-object +++++++++++++ seq A( Q, C ) new Exp ===================== join( ->A Q, ->X<-Q C ) new Exp ===================== ClassName A ClassName Q ClassName C ->A Q new Exp ===================== ClassName A ->X<-Q C new Exp ===================== ClassName Q ClassName C start with ClassName printing A B C A Q C done with ClassName printing TraversalGraph Start set: [Exps: {0}] Copy 0: Nodes: Exps Exp_CommaList Nonempty_Exp_CommaList Exp Simple QuantifierCompound Exists Compound Equation_CommaList Nonempty_Equation_CommaList Equation Edges: -> Exps,exps,Exp_CommaList -> Exp_CommaList,first,Nonempty_Exp_CommaList -> Nonempty_Exp_CommaList,it,Exp => Exp,Simple => Exp,QuantifierCompound => QuantifierCompound,Exists -> Exists,exp,Exp => Exp,Compound -> Compound,args,Exp_CommaList -> Nonempty_Exp_CommaList,next,Nonempty_Exp_CommaList -> Exps,eqs,Equation_CommaList -> Equation_CommaList,first,Nonempty_Equation_CommaList -> Nonempty_Equation_CommaList,it,Equation -> Equation,left,Exp -> Equation,right,Exp -> Nonempty_Equation_CommaList,next,Nonempty_Equation_CommaList Edges to other copies: 1: => Simple,Sequential Copy 1: Nodes: Exp Simple ClassName Sequential ClassName_CommaList Nonempty_ClassName_CommaList Edges: -> Sequential,source,ClassName -> Sequential,classname_commalist,ClassName_CommaList -> ClassName_CommaList,first,Nonempty_ClassName_CommaList -> Nonempty_ClassName_CommaList,it,ClassName -> Nonempty_ClassName_CommaList,next,Nonempty_ClassName_CommaList Edges to other copies: Finish set: [ClassName: {1}] modified Exps-object ( join( ->A 3 B, ->B 2 C ), exists( X ) join( ->A*X, <-X*B ), ->X<-A*B, =>X<=A B, seq A( B, C ), exists( R1 ) join( =>X<=A edge e R1, =>X<=R1 B ) ) equations( ->A*B= =>X<=A B, seq A( Q, C )= join( ->A*Q, ->X<-Q C ) ) displayed object : Exps ( : Exp_CommaList { : Nonempty_Exp_CommaList ( : Compound ( : Join ( ) : Exp_CommaList { : Nonempty_Exp_CommaList ( : Forward ( : ClassName ( : Ident "A" ) : Limited ( : Integer "3" ) : ClassName ( : Ident "B" ) ) : Nonempty_Exp_CommaList ( : Forward ( : ClassName ( : Ident "B" ) : Limited ( : Integer "2" ) : ClassName ( : Ident "C" ) ) ) ) } ) : Nonempty_Exp_CommaList ( : Exists ( : ClassName_CommaList { : Nonempty_ClassName_CommaList ( : ClassName ( : Ident "X" ) ) } : Compound ( : Join ( ) : Exp_CommaList { : Nonempty_Exp_CommaList ( : Forward ( : ClassName ( : Ident "A" ) : Unlimited ( ) : ClassName ( : Ident "X" ) ) : Nonempty_Exp_CommaList ( : Backward ( : ClassName ( : Ident "X" ) : Unlimited ( ) : ClassName ( : Ident "B" ) ) ) ) } ) ) : Nonempty_Exp_CommaList ( : Later ( : ClassName ( : Ident "A" ) : Unlimited ( ) : ClassName ( : Ident "B" ) ) : Nonempty_Exp_CommaList ( : UpOverDown ( : ClassName ( : Ident "A" ) : ClassName ( : Ident "B" ) ) : Nonempty_Exp_CommaList ( : Sequential ( : ClassName ( : Ident "A" ) : ClassName_CommaList { : Nonempty_ClassName_CommaList ( : ClassName ( : Ident "B" ) : Nonempty_ClassName_CommaList ( : ClassName ( : Ident "C" ) ) ) } ) : Nonempty_Exp_CommaList ( : Exists ( : ClassName_CommaList { : Nonempty_ClassName_CommaList ( : ClassName ( : Ident "R1" ) ) } : Compound ( : Join ( ) : Exp_CommaList { : Nonempty_Exp_CommaList ( : UpOverDown ( : ClassName ( : Ident "A" ) : EdgeName ( : Ident "e" ) : ClassName ( : Ident "R1" ) ) : Nonempty_Exp_CommaList ( : UpOverDown ( : ClassName ( : Ident "R1" ) : ClassName ( : Ident "B" ) ) ) ) } ) ) ) ) ) ) ) ) } : Equation_CommaList { : Nonempty_Equation_CommaList ( : Equation ( : Forward ( : ClassName ( : Ident "A" ) : Unlimited ( ) : ClassName ( : Ident "B" ) ) : UpOverDown ( : ClassName ( : Ident "A" ) : ClassName ( : Ident "B" ) ) ) : Nonempty_Equation_CommaList ( : Equation ( : Sequential ( : ClassName ( : Ident "A" ) : ClassName_CommaList { : Nonempty_ClassName_CommaList ( : ClassName ( : Ident "Q" ) : Nonempty_ClassName_CommaList ( : ClassName ( : Ident "C" ) ) ) } ) : Compound ( : Join ( ) : Exp_CommaList { : Nonempty_Exp_CommaList ( : Forward ( : ClassName ( : Ident "A" ) : Unlimited ( ) : ClassName ( : Ident "Q" ) ) : Nonempty_Exp_CommaList ( : Later ( : ClassName ( : Ident "Q" ) : ClassName ( : Ident "C" ) ) ) ) } ) ) ) ) } ) done