mirror of
https://github.com/Z3Prover/z3
synced 2026-05-16 23:25:36 +00:00
TPTP frontend: fix TFF numeric atom typing, decimal literals, and $uminus (#9518)
This PR targets the main TFF frontend parsing failures: bare numeric
atoms were being treated as uninterpreted terms (`U`) in formula
position, decimal literals were not parsed, and `$uminus` was not
recognized as an arithmetic builtin. These issues caused widespread
parse/type failures in arithmetic-heavy TPTP inputs.
- **Numeric atom parsing in formulas (TFF)**
- Added a shared numeric-literal parser path for term/formula contexts.
- In atomic formulas, numeric LHS now parses as arithmetic numerals
before `=`/`!=` handling, avoiding `U` vs `Int/Real` mismatches.
- **Decimal literal support**
- Extended numeral parsing to accept `d.d` forms and construct `Real`
numerals.
- Keeps existing integer (`d`) and rational (`d/d`) behavior on the same
code path.
- **`$uminus` builtin support**
- Added explicit handling for `$uminus(<arg>)` in term parsing.
- Enforces arity 1 and arithmetic-argument checks; maps directly to
arithmetic unary minus.
- **Focused regression coverage**
- Added/updated TPTP unit cases for:
- bare integer inequality: `31 != 12`
- decimal arithmetic literal usage
- `$uminus` in arithmetic predicates
Example of now-supported inputs:
```tptp
tff(c1,conjecture, 31 != 12).
tff(c2,conjecture, ~ $less(-3.25,-8.69)).
tff(c3,conjecture, $less($uminus(2),0)).
```
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
This commit is contained in:
parent
85465dcc66
commit
36fffb3a2f
2 changed files with 57 additions and 11 deletions
|
|
@ -81,6 +81,15 @@ R"(tff(c1,conjecture, ? [X: $int] : $less(12,X)).)",
|
|||
"% SZS status Theorem"},
|
||||
{"tff-lesseq-built-in",
|
||||
R"(tff(c1,conjecture, $lesseq(2,2)).)",
|
||||
"% SZS status Theorem"},
|
||||
{"tff-bare-integer-equality",
|
||||
R"(tff(c1,conjecture, 31 != 12).)",
|
||||
"% SZS status Theorem"},
|
||||
{"tff-decimal-literal",
|
||||
R"(tff(c1,conjecture, ~ $less(-3.25,-8.69)).)",
|
||||
"% SZS status Theorem"},
|
||||
{"tff-uminus-built-in",
|
||||
R"(tff(c1,conjecture, $less($uminus(2),0)).)",
|
||||
"% SZS status Theorem"}
|
||||
};
|
||||
for (auto const& c : cases) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue