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