private boolean addRoleChainTransition(final TransitionGraph<Role> tg, final Role s, final ATermList chain) { final Role firstRole = _rbox.getRole(chain.getFirst()); final Role lastRole = _rbox.getRole(chain.getLast()); final boolean firstRoleSame = s.isEquivalent(firstRole); final boolean lastRoleSame = s.isEquivalent(lastRole); final int length = chain.getLength(); if (firstRoleSame) { if (lastRoleSame && length != 2) return false; addRoleChainTransition(tg, tg.getFinalState(), tg.getFinalState(), chain.getNext(), length - 1); } else if (lastRoleSame) addRoleChainTransition(tg, tg.getInitialState(), tg.getInitialState(), chain, length - 1); else addRoleChainTransition(tg, tg.getInitialState(), tg.getFinalState(), chain, length); return true; }
private boolean addRoleChainTransition(final TransitionGraph<Role> tg, final Role s, final ATermList chain) { final Role firstRole = _rbox.getRole(chain.getFirst()); final Role lastRole = _rbox.getRole(chain.getLast()); final boolean firstRoleSame = s.isEquivalent(firstRole); final boolean lastRoleSame = s.isEquivalent(lastRole); final int length = chain.getLength(); if (firstRoleSame) { if (lastRoleSame && length != 2) return false; addRoleChainTransition(tg, tg.getFinalState(), tg.getFinalState(), chain.getNext(), length - 1); } else if (lastRoleSame) addRoleChainTransition(tg, tg.getInitialState(), tg.getInitialState(), chain, length - 1); else addRoleChainTransition(tg, tg.getInitialState(), tg.getFinalState(), chain, length); return true; }