non_presburger_subterms : (term -> term list)
Products of two expressions which both contain variables are not included in the subset, so such products will appear in the result list. However, the function SUC which is not normally included in a specification of Presburger arithmetic is allowed in this HOL implementation. This function also considers subtraction and the predecessor function, PRE, to be part of the subset.
#non_presburger_subterms "!m n p. m < (2 * n) /\ (n + n) <= p ==> m < SUC p";; ["m"; "n"; "p"] : term list #non_presburger_subterms "!m n p q. m < (n * p) /\ (n * p) < q ==> m < q";; ["m"; "n * p"; "q"] : term list #non_presburger_subterms "(m + n) - m = f n";; ["m"; "n"; "f n"] : term list