Fixes #177.
Uses the assumptions of predicate kind rules to infer more.
Uses operator input/outputs - i.e. if operator expects layer input, assume that the input expression is a layer.
Uses a tabular encoding of the rules, e.g. if we have rule (e1_kind, e2_kind, e3_kind) for a conjunction, and we have corresponding e1 and e3 kind then we know that e2 must be e2_kind.
Fixes #177. Uses the assumptions of predicate kind rules to infer more.
(e1_kind, e2_kind, e3_kind)
for a conjunction, and we have corresponding e1 and e3 kind then we know that e2 must be e2_kind.So https://github.com/modus-continens/modus/issues/177#issue-1168296365 should work with this PR.