From 16240e35eb14a5029291eae6e08cbdd88728b535 Mon Sep 17 00:00:00 2001 From: Ralf Jung <jung@mpi-sws.org> Date: Mon, 22 Aug 2016 11:53:26 +0200 Subject: [PATCH] use Psatz without using axioms about real numbers --- _CoqProject | 1 + prelude/psatz_axiomfree.v | 39 +++++++++++++++++++++++++++++++++++++++ prelude/tactics.v | 2 +- 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 prelude/psatz_axiomfree.v diff --git a/_CoqProject b/_CoqProject index 05c4e0532..903bf1256 100644 --- a/_CoqProject +++ b/_CoqProject @@ -21,6 +21,7 @@ prelude/listset.v prelude/streams.v prelude/gmap.v prelude/base.v +prelude/psatz_axiomfree.v prelude/tactics.v prelude/prelude.v prelude/listset_nodup.v diff --git a/prelude/psatz_axiomfree.v b/prelude/psatz_axiomfree.v new file mode 100644 index 000000000..9b1d430e9 --- /dev/null +++ b/prelude/psatz_axiomfree.v @@ -0,0 +1,39 @@ +(** This file is a hack that lets us use Psatz without importing all sorts of + axioms about real numbers. It has been created by copying the file + Psatz.v from the Coq distribution, removing everything defined after the lia + tactic, and removing the two lines importing RMicromega and Rdefinitions. + The original license header follows. *) + +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2016 *) +(* \VV/ **************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(************************************************************************) +(* *) +(* Micromega: A reflexive tactic using the Positivstellensatz *) +(* *) +(* Frédéric Besson (Irisa/Inria) 2006-2008 *) +(* *) +(************************************************************************) + +From Coq Require Import ZMicromega. +From Coq Require Import QMicromega. +From Coq Require Import QArith. +From Coq Require Import ZArith. +From Coq Require Import RingMicromega. +From Coq Require Import VarMap. +From Coq Require Tauto. +Declare ML Module "micromega_plugin". + +Ltac preprocess := + zify ; unfold Z.succ in * ; unfold Z.pred in *. + +Ltac lia := + preprocess; + xlia ; + abstract ( + intros __wit __varmap __ff ; + change (Tauto.eval_f (Zeval_formula (@find Z Z0 __varmap)) __ff) ; + apply (ZTautoChecker_sound __ff __wit); vm_cast_no_check (eq_refl true)). diff --git a/prelude/tactics.v b/prelude/tactics.v index 246e51cde..2a41f7646 100644 --- a/prelude/tactics.v +++ b/prelude/tactics.v @@ -3,7 +3,7 @@ (** This file collects general purpose tactics that are used throughout the development. *) From Coq Require Import Omega. -From Coq Require Export Psatz. +From iris.prelude Require Export psatz_axiomfree. From iris.prelude Require Export decidable. Lemma f_equal_dep {A B} (f g : ∀ x : A, B x) x : f = g → f x = g x. -- GitLab