diff --git a/_CoqProject b/_CoqProject index 05c4e0532cc5c43a3bafef31511923257c0e76dc..903bf1256eaec95e48fafb2ab4ad636b113d96f8 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 0000000000000000000000000000000000000000..9b1d430e972ab1d850cd71c15bce7ffae7415c70 --- /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 246e51cdec2fcc46fe7b553e6460cdadcedec623..2a41f76463b9857868fd74f0ac708bfedf514298 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.