Semi-Supervised Learning using Differentiable Reasoning