Commit 60d82286 authored by Ralf Jung's avatar Ralf Jung
Browse files

more restrictive Proof Using hints in heap_lang, proofmode, tests

parent 6db2ae8e
...@@ -3,7 +3,7 @@ From iris.heap_lang Require Export lifting. ...@@ -3,7 +3,7 @@ From iris.heap_lang Require Export lifting.
From iris.algebra Require Import auth. From iris.algebra Require Import auth.
From iris.heap_lang Require Import proofmode notation. From iris.heap_lang Require Import proofmode notation.
From iris.proofmode Require Import tactics. From iris.proofmode Require Import tactics.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Class heapPreG Σ := HeapPreG { Class heapPreG Σ := HeapPreG {
heap_preG_iris :> invPreG Σ; heap_preG_iris :> invPreG Σ;
......
...@@ -2,7 +2,7 @@ From iris.program_logic Require Export ectx_language ectxi_language. ...@@ -2,7 +2,7 @@ From iris.program_logic Require Export ectx_language ectxi_language.
From iris.algebra Require Export ofe. From iris.algebra Require Export ofe.
From iris.prelude Require Export strings. From iris.prelude Require Export strings.
From iris.prelude Require Import gmap. From iris.prelude Require Import gmap.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Module heap_lang. Module heap_lang.
Open Scope Z_scope. Open Scope Z_scope.
......
...@@ -2,7 +2,7 @@ From iris.program_logic Require Export weakestpre. ...@@ -2,7 +2,7 @@ From iris.program_logic Require Export weakestpre.
From iris.heap_lang Require Export lang. From iris.heap_lang Require Export lang.
From iris.proofmode Require Import tactics. From iris.proofmode Require Import tactics.
From iris.heap_lang Require Import proofmode notation. From iris.heap_lang Require Import proofmode notation.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Definition assert : val := Definition assert : val :=
λ: "v", if: "v" #() then #() else #0 #0. (* #0 #0 is unsafe *) λ: "v", if: "v" #() then #() else #0 #0. (* #0 #0 is unsafe *)
......
From iris.heap_lang Require Export notation. From iris.heap_lang Require Export notation.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Definition newbarrier : val := λ: <>, ref #false. Definition newbarrier : val := λ: <>, ref #false.
Definition signal : val := λ: "x", "x" <- #true. Definition signal : val := λ: "x", "x" <- #true.
......
...@@ -5,7 +5,7 @@ From iris.prelude Require Import functions. ...@@ -5,7 +5,7 @@ From iris.prelude Require Import functions.
From iris.base_logic Require Import big_op lib.saved_prop lib.sts. From iris.base_logic Require Import big_op lib.saved_prop lib.sts.
From iris.heap_lang Require Import proofmode. From iris.heap_lang Require Import proofmode.
From iris.heap_lang.lib.barrier Require Import protocol. From iris.heap_lang.lib.barrier Require Import protocol.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
(** The CMRAs/functors we need. *) (** The CMRAs/functors we need. *)
(* Not bundling heapG, as it may be shared with other users. *) (* Not bundling heapG, as it may be shared with other users. *)
......
From iris.algebra Require Export sts. From iris.algebra Require Export sts.
From iris.base_logic Require Import lib.own. From iris.base_logic Require Import lib.own.
From iris.prelude Require Export gmap. From iris.prelude Require Export gmap.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
(** The STS describing the main barrier protocol. Every state has an index-set (** The STS describing the main barrier protocol. Every state has an index-set
associated with it. These indices are actually [gname], because we use them associated with it. These indices are actually [gname], because we use them
......
...@@ -2,11 +2,12 @@ From iris.program_logic Require Export hoare. ...@@ -2,11 +2,12 @@ From iris.program_logic Require Export hoare.
From iris.heap_lang.lib.barrier Require Export barrier. From iris.heap_lang.lib.barrier Require Export barrier.
From iris.heap_lang.lib.barrier Require Import proof. From iris.heap_lang.lib.barrier Require Import proof.
From iris.heap_lang Require Import proofmode. From iris.heap_lang Require Import proofmode.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Import uPred. Import uPred.
Section spec. Section spec.
Context `{!heapG Σ} `{!barrierG Σ}. Set Default Proof Using "Type*".
Context `{!heapG Σ, !barrierG Σ}.
Lemma barrier_spec (N : namespace) : Lemma barrier_spec (N : namespace) :
recv send : loc iProp Σ -n> iProp Σ, recv send : loc iProp Σ -n> iProp Σ,
......
...@@ -4,7 +4,7 @@ From iris.heap_lang Require Export lang. ...@@ -4,7 +4,7 @@ From iris.heap_lang Require Export lang.
From iris.proofmode Require Import tactics. From iris.proofmode Require Import tactics.
From iris.algebra Require Import frac auth. From iris.algebra Require Import frac auth.
From iris.heap_lang Require Import proofmode notation. From iris.heap_lang Require Import proofmode notation.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Definition newcounter : val := λ: <>, ref #0. Definition newcounter : val := λ: <>, ref #0.
Definition incr : val := rec: "incr" "l" := Definition incr : val := rec: "incr" "l" :=
......
From iris.heap_lang Require Export lifting notation. From iris.heap_lang Require Export lifting notation.
From iris.base_logic.lib Require Export invariants. From iris.base_logic.lib Require Export invariants.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Structure lock Σ `{!heapG Σ} := Lock { Structure lock Σ `{!heapG Σ} := Lock {
(* -- operations -- *) (* -- operations -- *)
......
From iris.heap_lang Require Export spawn. From iris.heap_lang Require Export spawn.
From iris.heap_lang Require Import proofmode notation. From iris.heap_lang Require Import proofmode notation.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Import uPred. Import uPred.
Definition parN : namespace := nroot .@ "par". Definition parN : namespace := nroot .@ "par".
...@@ -14,6 +14,7 @@ Definition par : val := ...@@ -14,6 +14,7 @@ Definition par : val :=
Notation "e1 ||| e2" := (par (Pair (λ: <>, e1) (λ: <>, e2)))%E : expr_scope. Notation "e1 ||| e2" := (par (Pair (λ: <>, e1) (λ: <>, e2)))%E : expr_scope.
Section proof. Section proof.
Set Default Proof Using "Type*".
Context `{!heapG Σ, !spawnG Σ}. Context `{!heapG Σ, !spawnG Σ}.
(* Notice that this allows us to strip a later *after* the two Ψ have been (* Notice that this allows us to strip a later *after* the two Ψ have been
......
...@@ -4,7 +4,7 @@ From iris.heap_lang Require Export lang. ...@@ -4,7 +4,7 @@ From iris.heap_lang Require Export lang.
From iris.proofmode Require Import tactics. From iris.proofmode Require Import tactics.
From iris.heap_lang Require Import proofmode notation. From iris.heap_lang Require Import proofmode notation.
From iris.algebra Require Import excl. From iris.algebra Require Import excl.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Definition spawn : val := Definition spawn : val :=
λ: "f", λ: "f",
......
...@@ -4,7 +4,7 @@ From iris.proofmode Require Import tactics. ...@@ -4,7 +4,7 @@ From iris.proofmode Require Import tactics.
From iris.heap_lang Require Import proofmode notation. From iris.heap_lang Require Import proofmode notation.
From iris.algebra Require Import excl. From iris.algebra Require Import excl.
From iris.heap_lang.lib Require Import lock. From iris.heap_lang.lib Require Import lock.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Definition newlock : val := λ: <>, ref #false. Definition newlock : val := λ: <>, ref #false.
Definition try_acquire : val := λ: "l", CAS "l" #false #true. Definition try_acquire : val := λ: "l", CAS "l" #false #true.
......
...@@ -4,7 +4,7 @@ From iris.proofmode Require Import tactics. ...@@ -4,7 +4,7 @@ From iris.proofmode Require Import tactics.
From iris.heap_lang Require Import proofmode notation. From iris.heap_lang Require Import proofmode notation.
From iris.algebra Require Import auth gset. From iris.algebra Require Import auth gset.
From iris.heap_lang.lib Require Export lock. From iris.heap_lang.lib Require Export lock.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Import uPred. Import uPred.
Definition wait_loop: val := Definition wait_loop: val :=
......
...@@ -5,7 +5,7 @@ From iris.heap_lang Require Export lang. ...@@ -5,7 +5,7 @@ From iris.heap_lang Require Export lang.
From iris.heap_lang Require Import tactics. From iris.heap_lang Require Import tactics.
From iris.proofmode Require Import tactics. From iris.proofmode Require Import tactics.
From iris.prelude Require Import fin_maps. From iris.prelude Require Import fin_maps.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Import uPred. Import uPred.
(** Basic rules for language operations. *) (** Basic rules for language operations. *)
......
From iris.program_logic Require Import language. From iris.program_logic Require Import language.
From iris.heap_lang Require Export lang tactics. From iris.heap_lang Require Export lang tactics.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Coercion LitInt : Z >-> base_lit. Coercion LitInt : Z >-> base_lit.
Coercion LitBool : bool >-> base_lit. Coercion LitBool : bool >-> base_lit.
......
...@@ -2,7 +2,7 @@ From iris.program_logic Require Export weakestpre. ...@@ -2,7 +2,7 @@ From iris.program_logic Require Export weakestpre.
From iris.proofmode Require Import coq_tactics. From iris.proofmode Require Import coq_tactics.
From iris.proofmode Require Export tactics. From iris.proofmode Require Export tactics.
From iris.heap_lang Require Export tactics lifting. From iris.heap_lang Require Export tactics lifting.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Import uPred. Import uPred.
(** wp-specific helper tactics *) (** wp-specific helper tactics *)
......
From iris.heap_lang Require Export lang. From iris.heap_lang Require Export lang.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Import heap_lang. Import heap_lang.
(** We define an alternative representation of expressions in which the (** We define an alternative representation of expressions in which the
......
...@@ -2,7 +2,7 @@ From iris.proofmode Require Export classes. ...@@ -2,7 +2,7 @@ From iris.proofmode Require Export classes.
From iris.algebra Require Import gmap. From iris.algebra Require Import gmap.
From iris.prelude Require Import gmultiset. From iris.prelude Require Import gmultiset.
From iris.base_logic Require Import big_op. From iris.base_logic Require Import big_op.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Import uPred. Import uPred.
Section classes. Section classes.
......
From iris.base_logic Require Export base_logic. From iris.base_logic Require Export base_logic.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Import uPred. Import uPred.
Section classes. Section classes.
......
...@@ -2,7 +2,7 @@ From iris.base_logic Require Export base_logic. ...@@ -2,7 +2,7 @@ From iris.base_logic Require Export base_logic.
From iris.base_logic Require Import big_op tactics. From iris.base_logic Require Import big_op tactics.
From iris.proofmode Require Export environments classes. From iris.proofmode Require Export environments classes.
From iris.prelude Require Import stringmap hlist. From iris.prelude Require Import stringmap hlist.
Set Default Proof Using "Type*". Set Default Proof Using "Type".
Import uPred. Import uPred.
Import env_notations. Import env_notations.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment