How about:
num(num(X)) --> [X], {X > 3}
The {}/1 can be used to embed conditions and side effects in DCG grammar rules. DCGs are found in many Prolog systems but there is not yet a ripe standard. But most of the Prolog systems do have the {}/1. It is for example defined here:
Definite Clause Grammar Rules
Klaus Daessler
August 20, 2013
http://www.complang.tuwien.ac.at/ulrich/iso-prolog/dcgs/dcgsdin130820.pdf
In the glossary the {}/1 goes as "grammar body goal". In older publications the construct was called "auxiliary action", "procedure call" or "extra conditions", which is probably more sensible than just calling it grammar body goal, since we would like to see all constituents of a grammar body as grammar body goals. See for example here:
Definite Clause Grammars for Language Analysis
Fernando C. N. Pereira and David H. D. Warren
Artificial Intelligence 13 (1980), 231-278
http://cgi.di.uoa.gr/~takis/pereira-warren.pdf
Bye