DILP [1]} combines ILP with a differentiable neural network architecture, to make ILP robust to noisy or ambiguous data. In short, DILP generates a collection of clauses based on the rule templates,A template describes the rule used to generate the clauses. A rule template is defined by the number of additional variables \(v\in \mathbb {N} \)  and whether to allow intensional predicates \(i\in \lbrace 0, 1\rbrace \) . For example, we can specify the template for predicate \(\mathtt {p}(X)\)  to be \(\lbrace v=0, i=1\rbrace \) , which means using no additional variables (only \(X\) ), and allowing intensional predicates. When two other 1-ary predicates exist as q and r, we first generate all possible atoms, namely \(\mathtt {q}(X)\) , and \(\mathtt {r}(X)\) , then we enumarate all combination of those atoms to generate the body of the clause.  Therefore the clauses generated will be \(\mathtt {p}(X)\leftarrow \mathtt {q}(X),\mathtt {q}(X)\) , \(\mathtt {p}(X)\leftarrow \mathtt {r}(X),\mathtt {r}(X)\) , and \(\mathtt {p}(X)\leftarrow \mathtt {q}(X), \mathtt {r}(X)\) . We refer to [1]} for a detailed elaboration on the generation process, and Appendix  for the process of choosing hyperparameters in a rule template. and assigns trainable weights to those clauses. Then logical deduction is applied recursively using the weighted sum of the clauses on the valuation vector \(\mathbf {a}\in [0, 1]^g\) , where \(g\)  is the number of grounding atoms and \(\mathbf {a}[i]\)  is the probability that the grounding atom \(i\)  is true. With the trainable weights, DILP can be trained using the gradient descent method.
