Pattern matching in racklog / datalog

I was trying to port one of the prolog examples from plai 1 into racklog
but it seems that the "#lang datalog"/"#lang racklog" rules for a clause
head are stricter. So in particular rules like

tc(plusE(L, R), numT) :-
        tc(L, numT),
        tc(R, numT).

are rejected. I think I can use unification in the the lispy syntax,
but that doesn't match the book very well, and also seems like kindof a
big hammer, given the plait version of the same code just uses
deconstructive-binding (aka type-case).

Is there an idiomatic way to translate this kind of thing into "#lang
racklog" ?