:- module( _, [add/2], [assertions , regtypes , basicmodes , nativeprops] ).

add([[ref(loc(1)),ref(loc(2))],[[num(int(A)),num(int(B))],[num(int(C)),num(int(D))]]],[E,F]) :-
        B>=D,
        D=\=0,
        G is B rem D,
        G\=0,
        H is B+B,
        execute_notrace_1(A,B,C,D,H,F,_1,_2,_3,_4,E,_5) .
add([[ref(loc(1)),ref(loc(2))],[[num(int(A)),num(int(B))],[num(int(C)),num(int(D))]]],[E,F]) :-
        B>=D,
        D=\=0,
        0 is B rem D,
        execute_notrace_2(A,B,C,D,B,1,F,_1,_2,_3,_4,E,_5) .
add([[ref(loc(1)),ref(loc(2))],[[num(int(A)),num(int(B))],[num(int(C)),num(int(0))]]],[refE(loc(3)),[[num(int(A)),num(int(B))],[num(int(C)),num(int(0))],[]]]) :-
        B>=0 .
add([[ref(loc(1)),ref(loc(2))],[[num(int(A)),num(int(B))],[num(int(C)),num(int(D))]]],[E,F]) :-
        B<D,
        B=\=0,
        G is D rem B,
        G\=0,
        H is D+D,
        execute_notrace_3(A,B,C,D,D,B,H,0,F,_1,_2,_3,_4,E,_5) .
add([[ref(loc(1)),ref(loc(2))],[[num(int(A)),num(int(B))],[num(int(C)),num(int(D))]]],[E,F]) :-
        B<D,
        B=\=0,
        0 is D rem B,
        execute_notrace_3(A,B,C,D,D,B,D,1,F,_1,_2,_3,_4,E,_5) .
add([[ref(loc(1)),ref(loc(2))],[[num(int(A)),num(int(0))],[num(int(B)),num(int(C))]]],[refE(loc(3)),[[num(int(A)),num(int(0))],[num(int(B)),num(int(C))],[]]]) :-
        0<C .
add([[ref(loc(1)),null],[[num(int(A)),num(int(B))]]],[refE(loc(2)),[[num(int(A)),num(int(B))],[]]]).
add([[null,ref(loc(1))],[[num(int(A)),num(int(B))]]],[refE(loc(2)),[[num(int(A)),num(int(B))],[]]]).
add([[null,null],[]],[refE(loc(1)),[[]]]).

execute_notrace_1(A,B,C,D,E,F,G,H,I,J,K,L) :-
        D=\=0,
        M is E rem D,
        M\=0,
        N is E+B,
        execute_notrace_1(A,B,C,D,N,F,G,H,I,J,K,L) .
execute_notrace_1(A,B,C,D,E,F,G,H,I,J,K,L) :-
        D=\=0,
        0 is E rem D,
        execute_notrace_2(A,B,C,D,E,1,F,G,H,I,J,K,L) .
execute_notrace_1(A,B,C,0,_1,[[num(int(A)),num(int(B))],[num(int(C)),num(int(0))],[]],_2,_3,_4,_5,refE(loc(3)),[]).

execute_notrace_2(A,B,C,D,E,F,[[num(int(A)),num(int(B))],[num(int(C)),num(int(D))],[num(int(G)),num(int(E))]],_1,_2,_3,_4,ref(loc(3)),[]) :-
        F\=0,
        B=\=0,
        H is E//B,
        I is H*A,
        D=\=0,
        J is E//D,
        K is J*C,
        G is I+K .
execute_notrace_2(A,B,C,0,D,E,[[num(int(A)),num(int(B))],[num(int(C)),num(int(0))],[num(int(0)),num(int(0))],[]],_1,_2,_3,_4,refE(loc(4)),[]) :-
        E\=0,
        B=\=0,
        F is D//B,
        _5 is F*A .
execute_notrace_2(A,0,B,C,_1,D,[[num(int(A)),num(int(0))],[num(int(B)),num(int(C))],[num(int(0)),num(int(0))],[]],_2,_3,_4,_5,refE(loc(4)),[]) :-
        D\=0 .
execute_notrace_2(A,B,C,D,E,0,F,G,H,I,J,K,L) :-
        D=\=0,
        M is E rem D,
        M\=0,
        N is E+B,
        execute_notrace(program([class(className(packageName(''),shortClassName('Rational')),final(false),public(true),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[field(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(num)),primitiveType(int)),final(false),static(false),public,initialValue(undef)),field(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(den)),primitiveType(int)),final(false),static(false),public,initialValue(undef))],[method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName('<init>')),[],none),bytecodeMethod(1,2,0,methodId('0',0),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName('<init>')),[primitiveType(int),primitiveType(int)],none),bytecodeMethod(3,2,0,methodId('0',1),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(exp)),[primitiveType(int)],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,4,0,methodId('0',2),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(add)),[refType(classType(className(packageName(''),shortClassName('Rational')))),refType(classType(className(packageName(''),shortClassName('Rational'))))],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,5,0,methodId('0',3),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(add)),[refType(classType(className(packageName(''),shortClassName('Rational'))))],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,4,0,methodId('0',4),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(mul)),[refType(classType(className(packageName(''),shortClassName('Rational'))))],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(2,5,0,methodId('0',5),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(expMain)),[primitiveType(int),primitiveType(int),primitiveType(int)],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(3,4,0,methodId('0',6),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(simplify)),[],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,4,0,methodId('0',7),[]),final(false),static(false),public)]),class(className(packageName(''),shortClassName('Arithmetic')),final(false),public(true),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('1',0),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(exp)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('1',1),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(fact)),[primitiveType(int)],primitiveType(int)),bytecodeMethod(2,2,0,methodId('1',2),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(lcm)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('1',3),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(lcm2)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('1',4),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(gcd)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(3,2,0,methodId('1',5),[]),final(false),static(true),public)]),class(className(packageName('java/lang/'),shortClassName('Object')),final(false),public(false),abstract(false),none,[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('Object',0),[]),final(false),static(false),public)]),class(className(packageName('java/lang/'),shortClassName('String')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('String')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('String',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('NullPointerException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('NullPointerException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('NullPointerException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ArrayStoreException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArrayStoreException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArrayStoreException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ArrayIndexOutOfBoundsException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArrayIndexOutOfBoundsException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArrayIndexOutOfBoundsException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('NegativeArraySizeException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('NegativeArraySizeException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('NegativeArraySizeException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ClassCastException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ClassCastException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ClassCastException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ArithmeticException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArithmeticException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArithmeticException',0),[]),final(false),static(false),private)])],[]),st(heap(dynamicHeap([object(locationObject(className(packageName(''),shortClassName('Rational'))),[objectField(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(num)),primitiveType(int)),num(int(A))),objectField(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(den)),primitiveType(int)),num(int(B)))]),object(locationObject(className(packageName(''),shortClassName('Rational'))),[objectField(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(num)),primitiveType(int)),num(int(C))),objectField(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(den)),primitiveType(int)),num(int(D)))])]),staticHeap([])),fr(method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(lcm2)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('1',4),[]),final(false),static(true),public),15,[],[num(int(B)),num(int(D)),num(int(N)),num(int(0))]),[fr(method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(add)),[refType(classType(className(packageName(''),shortClassName('Rational')))),refType(classType(className(packageName(''),shortClassName('Rational'))))],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,5,0,methodId('0',3),[]),final(false),static(true),public),8,[],[ref(loc(1)),ref(loc(2)),num(int(0)),num(int(0))])]),st(F,fr(H,I,[K|L],J),G)) .
execute_notrace_2(A,B,C,D,E,0,F,G,H,I,J,K,L) :-
        D=\=0,
        0 is E rem D,
        execute_notrace(program([class(className(packageName(''),shortClassName('Rational')),final(false),public(true),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[field(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(num)),primitiveType(int)),final(false),static(false),public,initialValue(undef)),field(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(den)),primitiveType(int)),final(false),static(false),public,initialValue(undef))],[method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName('<init>')),[],none),bytecodeMethod(1,2,0,methodId('0',0),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName('<init>')),[primitiveType(int),primitiveType(int)],none),bytecodeMethod(3,2,0,methodId('0',1),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(exp)),[primitiveType(int)],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,4,0,methodId('0',2),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(add)),[refType(classType(className(packageName(''),shortClassName('Rational')))),refType(classType(className(packageName(''),shortClassName('Rational'))))],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,5,0,methodId('0',3),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(add)),[refType(classType(className(packageName(''),shortClassName('Rational'))))],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,4,0,methodId('0',4),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(mul)),[refType(classType(className(packageName(''),shortClassName('Rational'))))],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(2,5,0,methodId('0',5),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(expMain)),[primitiveType(int),primitiveType(int),primitiveType(int)],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(3,4,0,methodId('0',6),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(simplify)),[],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,4,0,methodId('0',7),[]),final(false),static(false),public)]),class(className(packageName(''),shortClassName('Arithmetic')),final(false),public(true),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('1',0),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(exp)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('1',1),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(fact)),[primitiveType(int)],primitiveType(int)),bytecodeMethod(2,2,0,methodId('1',2),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(lcm)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('1',3),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(lcm2)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('1',4),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(gcd)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(3,2,0,methodId('1',5),[]),final(false),static(true),public)]),class(className(packageName('java/lang/'),shortClassName('Object')),final(false),public(false),abstract(false),none,[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('Object',0),[]),final(false),static(false),public)]),class(className(packageName('java/lang/'),shortClassName('String')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('String')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('String',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('NullPointerException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('NullPointerException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('NullPointerException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ArrayStoreException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArrayStoreException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArrayStoreException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ArrayIndexOutOfBoundsException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArrayIndexOutOfBoundsException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArrayIndexOutOfBoundsException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('NegativeArraySizeException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('NegativeArraySizeException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('NegativeArraySizeException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ClassCastException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ClassCastException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ClassCastException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ArithmeticException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArithmeticException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArithmeticException',0),[]),final(false),static(false),private)])],[]),st(heap(dynamicHeap([object(locationObject(className(packageName(''),shortClassName('Rational'))),[objectField(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(num)),primitiveType(int)),num(int(A))),objectField(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(den)),primitiveType(int)),num(int(B)))]),object(locationObject(className(packageName(''),shortClassName('Rational'))),[objectField(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(num)),primitiveType(int)),num(int(C))),objectField(fieldSignature(fieldName(className(packageName(''),shortClassName('Rational')),shortFieldName(den)),primitiveType(int)),num(int(D)))])]),staticHeap([])),fr(method(methodSignature(methodName(className(packageName(''),shortClassName('Arithmetic')),shortMethodName(lcm2)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('1',4),[]),final(false),static(true),public),15,[],[num(int(B)),num(int(D)),num(int(E)),num(int(1))]),[fr(method(methodSignature(methodName(className(packageName(''),shortClassName('Rational')),shortMethodName(add)),[refType(classType(className(packageName(''),shortClassName('Rational')))),refType(classType(className(packageName(''),shortClassName('Rational'))))],refType(classType(className(packageName(''),shortClassName('Rational'))))),bytecodeMethod(4,5,0,methodId('0',3),[]),final(false),static(true),public),8,[],[ref(loc(1)),ref(loc(2)),num(int(0)),num(int(0))])]),st(F,fr(H,I,[K|L],J),G)) .
execute_notrace_2(A,B,C,0,_1,0,[[num(int(A)),num(int(B))],[num(int(C)),num(int(0))],[]],_2,_3,_4,_5,refE(loc(3)),[]).

execute_notrace_3(A,B,C,D,_1,_2,E,F,[[num(int(A)),num(int(B))],[num(int(C)),num(int(D))],[num(int(G)),num(int(E))]],_3,_4,_5,_6,ref(loc(3)),[]) :-
        F\=0,
        B=\=0,
        H is E//B,
        I is H*A,
        D=\=0,
        J is E//D,
        K is J*C,
        G is I+K .
execute_notrace_3(A,B,C,0,_1,_2,D,E,[[num(int(A)),num(int(B))],[num(int(C)),num(int(0))],[num(int(0)),num(int(0))],[]],_3,_4,_5,_6,refE(loc(4)),[]) :-
        E\=0,
        B=\=0,
        F is D//B,
        _7 is F*A .
execute_notrace_3(A,0,B,C,_1,_2,_3,D,[[num(int(A)),num(int(0))],[num(int(B)),num(int(C))],[num(int(0)),num(int(0))],[]],_4,_5,_6,_7,refE(loc(4)),[]) :-
        D\=0 .
execute_notrace_3(A,B,C,D,E,F,G,0,H,I,J,K,L,M,N) :-
        F=\=0,
        O is G rem F,
        O\=0,
        P is G+E,
        execute_notrace_3(A,B,C,D,E,F,P,0,H,I,J,K,L,M,N) .
execute_notrace_3(A,B,C,D,E,F,G,0,H,I,J,K,L,M,N) :-
        F=\=0,
        0 is G rem F,
        execute_notrace_3(A,B,C,D,E,F,G,1,H,I,J,K,L,M,N) .
execute_notrace_3(A,B,C,D,_1,0,_2,0,[[num(int(A)),num(int(B))],[num(int(C)),num(int(D))],[]],_3,_4,_5,_6,refE(loc(3)),[]).


