Quand on utilise un logiciel, il est souvent intéressant d'essayer d'expliquer certains aspects de son fonctionnement. Ainsi, dans le cadre d'une étude de la géométrie analytique, Cabri devient une intéressante source de problèmes, dont voici un exemple:
Quand notre pointeur s'approche d'un objet de la figure, Cabri nous le signale. On peut présumer que Cabri calcule constamment la distance du pointeur à chaque objet de la figure, et nous signale au besoin ceux qui sont à proximité (en donnant, selon le cas, priorité aux points, etc.). Mais comment Cabri calcule-t-il la distance d'un point à un objet (droite, segment, demi-droite, cercle, etc.)?
De la même façon, dans le cadre d'un cours d'algorithmique, il peut s'avérer intéressant de simuler la gestion par Cabri des cas limites (l'existence des points de tangence, par exemple) ou de la vérification des propriétés.
De plus, lorsque l'on a accès aux sources du programme (comme dans le cas de ProEuclide), on peut imaginer d'effacer certaines procédures spécifiques (correspondant aux problèmes évoqués ci-dessus) et de permettre aux étudiants de les écrire et de les mettre au point, dans le cadre de la résolution d'un problème.