From 2d10ddb7f6d2017faccdb097f4ee89521eecb5fe Mon Sep 17 00:00:00 2001 From: Michael Sammler <noreply@sammler.me> Date: Wed, 9 Dec 2020 14:43:42 +0100 Subject: [PATCH] omit unit refinement --- tutorial/alloc_internal.h | 2 +- tutorial/proofs/t04_alloc/generated_spec.v | 58 ++++++++++++---------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/tutorial/alloc_internal.h b/tutorial/alloc_internal.h index 2cceccd7..236feb6c 100644 --- a/tutorial/alloc_internal.h +++ b/tutorial/alloc_internal.h @@ -13,7 +13,7 @@ typedef struct [[rc::refined_by("sizes : {list nat}")]] struct alloc_entry *next; }* alloc_entry_t; -struct [[rc::refined_by("n : unit")]] +struct [[rc::ptr_type("alloc_state : ...")]] [[rc::exists("lid: lock_id")]] alloc_state { [[rc::field("spinlock<lid>")]] struct spinlock lock; diff --git a/tutorial/proofs/t04_alloc/generated_spec.v b/tutorial/proofs/t04_alloc/generated_spec.v index e557be47..25a2b7ad 100644 --- a/tutorial/proofs/t04_alloc/generated_spec.v +++ b/tutorial/proofs/t04_alloc/generated_spec.v @@ -76,12 +76,14 @@ Section spec. Next Obligation. done. Qed. (* Definition of type [alloc_state]. *) - Definition alloc_state_rec : (unit -d> typeO) → (unit -d> typeO) := (λ self n, - tyexists (λ lid : lock_id, - struct struct_alloc_state [@{type} - (spinlock (lid)) ; - (spinlocked (lid) ("data") (alloc_entry_t)) - ]) + Definition alloc_state_rec : (() -d> typeO) → (() -d> typeO) := (λ self _, + ( + tyexists (λ lid : lock_id, + struct struct_alloc_state [@{type} + (spinlock (lid)) ; + (spinlocked (lid) ("data") (alloc_entry_t)) + ]) + ) )%I. Typeclasses Opaque alloc_state_rec. @@ -89,39 +91,41 @@ Section spec. Proof. solve_type_proper. Qed. Definition alloc_state : rtype := {| - rty_type := unit; + rty_type := (); rty r__ := fixp alloc_state_rec r__ |}. - Lemma alloc_state_unfold (n : unit) : - (n @ alloc_state)%I ≡@{type} ( - tyexists (λ lid : lock_id, - struct struct_alloc_state [@{type} - (spinlock (lid)) ; - (spinlocked (lid) ("data") (alloc_entry_t)) - ]) + Lemma alloc_state_unfold : + (() @ alloc_state)%I ≡@{type} ( + ( + tyexists (λ lid : lock_id, + struct struct_alloc_state [@{type} + (spinlock (lid)) ; + (spinlocked (lid) ("data") (alloc_entry_t)) + ]) + ) )%I. Proof. by rewrite {1}/with_refinement/=fixp_unfold. Qed. Global Program Instance alloc_state_rmovable : RMovable alloc_state := - {| rmovable 'n := movable_eq _ _ (alloc_state_unfold n) |}. + {| rmovable '() := movable_eq _ _ (alloc_state_unfold) |}. Next Obligation. solve_ty_layout_eq. Qed. - Global Instance alloc_state_simplify_hyp_place_inst l_ β_ (n : unit) : - SimplifyHypPlace l_ β_ (n @ alloc_state)%I (Some 100%N) := - λ T, i2p (simplify_hyp_place_eq l_ β_ _ _ T (alloc_state_unfold _)). - Global Instance alloc_state_simplify_goal_place_inst l_ β_ (n : unit) : - SimplifyGoalPlace l_ β_ (n @ alloc_state)%I (Some 100%N) := - λ T, i2p (simplify_goal_place_eq l_ β_ _ _ T (alloc_state_unfold _)). + Global Instance alloc_state_simplify_hyp_place_inst l_ β_ : + SimplifyHypPlace l_ β_ (() @ alloc_state)%I (Some 100%N) := + λ T, i2p (simplify_hyp_place_eq l_ β_ _ _ T (alloc_state_unfold)). + Global Instance alloc_state_simplify_goal_place_inst l_ β_ : + SimplifyGoalPlace l_ β_ (() @ alloc_state)%I (Some 100%N) := + λ T, i2p (simplify_goal_place_eq l_ β_ _ _ T (alloc_state_unfold)). - Global Program Instance alloc_state_simplify_hyp_val_inst v_ (n : unit) : - SimplifyHypVal v_ (n @ alloc_state)%I (Some 100%N) := - λ T, i2p (simplify_hyp_val_eq v_ _ _ (alloc_state_unfold _) T _). + Global Program Instance alloc_state_simplify_hyp_val_inst v_ : + SimplifyHypVal v_ (() @ alloc_state)%I (Some 100%N) := + λ T, i2p (simplify_hyp_val_eq v_ _ _ (alloc_state_unfold) T _). Next Obligation. done. Qed. - Global Program Instance alloc_state_simplify_goal_val_inst v_ (n : unit) : - SimplifyGoalVal v_ (n @ alloc_state)%I (Some 100%N) := - λ T, i2p (simplify_goal_val_eq v_ _ _ (alloc_state_unfold _) T _). + Global Program Instance alloc_state_simplify_goal_val_inst v_ : + SimplifyGoalVal v_ (() @ alloc_state)%I (Some 100%N) := + λ T, i2p (simplify_goal_val_eq v_ _ _ (alloc_state_unfold) T _). Next Obligation. done. Qed. (* Type definitions. *) -- GitLab