Sign-Out Group
signOutGroup(ident uid, ident id, ident studentId) {
assume exists /exercise[id] && /exercise[id]/open &&
exists /account[uid]/student && /account[uid]/student/id = studentId
|| exists /account[uid]/assistant[id];
assume exists /exercise[id]/student[studentId]/group;
# implies existence of the exercise and student, even the group
update /exercise[id]/group[/exercise[id]/student[studentId]/group]/curSize
(/exercise[id]/group[/exercise[id]/student[studentId]/group]/curSize - 1)
remove /exercise[id]/student[studentId]/group;
}