diff --git a/lib/ModuRes/Axioms.v b/lib/ModuRes/Axioms.v new file mode 100644 index 0000000000000000000000000000000000000000..a9c9117186c2dd50d258d750bf71dce0529d7a96 --- /dev/null +++ b/lib/ModuRes/Axioms.v @@ -0,0 +1,4 @@ +(* This file defines all axioms we are relying on in our development. *) + +Axiom ProofIrrelevance: forall (P: Prop) (p q: P), p = q. +Ltac pi p q := erewrite (ProofIrrelevance _ p q). diff --git a/lib/ModuRes/RAConstr.v b/lib/ModuRes/RAConstr.v index 3760237114513019ee0e6fb20e86d2c8a094e8cd..7677865f6efdd959365d9faa3e56e575f9aa70cf 100644 --- a/lib/ModuRes/RAConstr.v +++ b/lib/ModuRes/RAConstr.v @@ -1,5 +1,5 @@ Require Import Ssreflect.ssreflect Ssreflect.ssrfun Omega. -Require Import PreoMet RA. +Require Import PreoMet RA Axioms. Local Open Scope ra_scope. Local Open Scope predom_scope. @@ -331,13 +331,8 @@ Section Agreement. end. Local Ltac ra_ag_destr := repeat (match goal with [ x : ra_agree |- _ ] => destruct x end). - - (* Land of dragons starts here *) - Axiom ProofIrrelevance: forall (P: Prop) (p q: P), p = q. - Ltac pi p q := erewrite (ProofIrrelevance _ p q). - Local Ltac ra_ag_auto := first [by firstorder | split; [by firstorder|intros pv1 pv2; pi pv1 pv2; by firstorder ]]. - + Global Instance ra_agree_eq_equiv : Equivalence ra_agree_eq. Proof. split; repeat intro; ra_ag_destr; try (exact I || contradiction); [| |]. (* 3 goals left. *)