3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-07-05 14:56:11 +00:00
z3/src/cmd_context
Nikolaj Bjorner 5bd485eb03 TPTP: encode $tType quantification as polymorphism; guard dependent types
Fixes soundness/completeness of the TPTP frontend for polymorphic (TF1/TH1)
problems, reducing TPTP-v9.2.1 BUG verdicts from 28 to 4.

* Treat regular-forall "! [A: $tType] : ..." as genuine type quantification
  (bind A via mk_type_var) instead of monomorphizing it to the universe sort.
  This is the standard THF/TH1 way to quantify over types, and monomorphizing
  it silently prevented theory_polymorphism from instantiating the axioms.
* Use the plain smt solver (mk_smt_solver_factory) for problems that contain
  type variables. The strategic solver's tactic preprocessing eliminates the
  unconstrained conjecture instance before the core can link it to its
  polymorphic axiom, yielding a spurious CounterSatisfiable.
* Detect value-indexed dependent type families ("T > $tType"), which the
  parametric-polymorphism encoding cannot represent soundly, and downgrade
  both sat and unsat verdicts to GaveUp (previously produced unsound Theorems,
  e.g. SEV600/601/602).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-03 16:34:56 -07:00
..
extra_cmds Remove unnecessary semicolons (Attempt 2) (#10020) 2026-07-02 12:47:29 -07:00
basic_cmds.cpp Revert "Refactor find_psort_decl() to return std::optional<psort_decl*> (#8339)" 2026-02-18 20:57:56 -08:00
basic_cmds.h booyah 2020-07-04 15:56:30 -07:00
CMakeLists.txt Integrate TPTP with internal APIs via cmd_context, add embedded-string TPTP regression tests, and fix TFF arithmetic/timeout regressions (#9483) 2026-05-12 19:29:58 -04:00
cmd_context.cpp Revert "Refactor find_psort_decl() to return std::optional<psort_decl*> (#8339)" 2026-02-18 20:57:56 -08:00
cmd_context.h Remove redundant default constructors when they're the only constructor (#8461) 2026-02-18 20:58:01 -08:00
cmd_context_to_goal.cpp fix #5300 2021-05-28 14:16:43 -07:00
cmd_context_to_goal.h booyah 2020-07-04 15:56:30 -07:00
cmd_util.cpp make include paths uniformly use path relative to src. #534 2017-07-31 13:24:11 -07:00
cmd_util.h Use "override" keyword where needed. (#9892) 2026-06-18 13:36:14 -06:00
echo_tactic.cpp mux 2019-06-05 09:06:17 +01:00
echo_tactic.h add missing tactic descriptions, add rewrite for tamagochi 2023-01-08 13:32:26 -08:00
eval_cmd.cpp remove theory_str and classes that are only used by it 2025-08-07 21:05:12 -07:00
eval_cmd.h booyah 2020-07-04 15:56:30 -07:00
parametric_cmd.cpp fix a couple hundred deref-after-free bugs due to .c_str() on a temporary string 2020-07-11 20:24:45 +01:00
parametric_cmd.h fix #6023 2022-05-08 12:03:13 -07:00
pdecl.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
pdecl.h Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
README remove hassel table from unstable: does not compile under other plantforms 2013-05-31 17:48:19 -07:00
simplifier_cmds.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
simplifier_cmds.h Add simplification customization for SMTLIB2 2023-01-30 22:38:51 -08:00
simplify_cmd.cpp remove theory_str and classes that are only used by it 2025-08-07 21:05:12 -07:00
simplify_cmd.h booyah 2020-07-04 15:56:30 -07:00
tactic_cmds.cpp refactor solver to include settable stats 2026-06-07 14:17:38 -07:00
tactic_cmds.h remove default destructors 2024-10-02 22:20:12 +01:00
tactic_manager.cpp Revert "Refactor find_tactic_cmd to use std::optional<tactic_cmd*> (#8331)" 2026-02-18 20:57:56 -08:00
tactic_manager.h Revert "Refactor find_tactic_cmd to use std::optional<tactic_cmd*> (#8331)" 2026-02-18 20:57:56 -08:00
tptp_frontend.cpp TPTP: encode $tType quantification as polymorphism; guard dependent types 2026-07-03 16:34:56 -07:00
tptp_frontend.h Integrate TPTP with internal APIs via cmd_context, add embedded-string TPTP regression tests, and fix TFF arithmetic/timeout regressions (#9483) 2026-05-12 19:29:58 -04:00

Command context provides the infrastructure for executing commands in front-ends such as SMT-LIB 2.0.
It is also provides the solver abstraction to plugin solvers in this kind of front-end.