a4 = args[1];
} else if (a1.isVariable()){
a3 = new VariableTerm(engine);
a4 = new VariableTerm(engine);
Term[] args = {a3, a4};
((VariableTerm) a1).bind(new StructureTerm(s2, args), engine.trail);
} else {
return engine.fail();
}
a2 = a2.dereference();
if (a2.isStructure()){
if (! s3.equals(((StructureTerm)a2).functor()))
return engine.fail();
Term[] args = ((StructureTerm)a2).args();
a5 = args[0];
a6 = args[1];
} else if (a2.isVariable()){
a5 = new VariableTerm(engine);
a6 = new VariableTerm(engine);
Term[] args = {a5, a6};
((VariableTerm) a2).bind(new StructureTerm(s3, args), engine.trail);
} else {
return engine.fail();
}
a6 = a6.dereference();
if (a6.isStructure()){
if (! s4.equals(((StructureTerm)a6).functor()))
return engine.fail();
Term[] args = ((StructureTerm)a6).args();
a7 = args[0];
a8 = args[1];
} else if (a6.isVariable()){
a7 = new VariableTerm(engine);
a8 = new VariableTerm(engine);
Term[] args = {a7, a8};
((VariableTerm) a6).bind(new StructureTerm(s4, args), engine.trail);
} else {
return engine.fail();
}
a9 = new VariableTerm(engine);
//START inline expansion of $get_level(a(9))
if (! a9.unify(new IntegerTerm(engine.B0), engine.trail)) {
return engine.fail();
}
//END inline expansion
//START inline expansion of nonvar(a(3))
a3 = a3.dereference();
if (a3.isVariable()) {
return engine.fail();
}
//END inline expansion
a10 = new VariableTerm(engine);
a11 = new VariableTerm(engine);
Term[] y1 = {a10, a11};
a12 = new StructureTerm(s4, y1);
//START inline expansion of $unify(a(3),a(12))
if (! a3.unify(a12, engine.trail)) {
return engine.fail();
}
//END inline expansion