Skip to content
Snippets Groups Projects
Commit 2935cc99 authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Add documentation to heap_lang_tactics.

parent 735dd18f
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,12 @@ Require Export barrier.heap_lang. ...@@ -2,6 +2,12 @@ Require Export barrier.heap_lang.
Require Import prelude.fin_maps. Require Import prelude.fin_maps.
Import heap_lang. Import heap_lang.
(** The tactic [inv_step] performs inversion on hypotheses of the shape
[prim_step] and [head_step]. For hypotheses of the shape [prim_step] it will
decompose the evaluation context. The tactic will discharge
head-reductions starting from values, and simplifies hypothesis related
to conversions from and to values, and finite map operations. This tactic is
slightly ad-hoc and tuned for proving our lifting lemmas. *)
Ltac inv_step := Ltac inv_step :=
repeat match goal with repeat match goal with
| _ => progress simplify_map_equality' (* simplify memory stuff *) | _ => progress simplify_map_equality' (* simplify memory stuff *)
...@@ -21,6 +27,9 @@ Ltac inv_step := ...@@ -21,6 +27,9 @@ Ltac inv_step :=
inversion H; subst; clear H inversion H; subst; clear H
end. end.
(** The tactic [reshape_expr e tac] decomposes the expression [e] into an
evaluation context [K] and a subexpression [e']. It calls the tactic [tac K e']
for each possible decomposition until [tac] succeeds. *)
Ltac reshape_expr e tac := Ltac reshape_expr e tac :=
let rec go K e := let rec go K e :=
match e with match e with
...@@ -60,6 +69,11 @@ Ltac reshape_expr e tac := ...@@ -60,6 +69,11 @@ Ltac reshape_expr e tac :=
end end
end in go (@nil ectx_item) e. end in go (@nil ectx_item) e.
(** The tactic [do_step tac] solves goals of the shape [reducible], [prim_step]
and [head_step] by performing a reduction step and uses [tac] to solve any
side-conditions generated by individual steps. In case of goals of the shape
[reducible] and [prim_step], it will try to decompose to expression on the LHS
into an evaluation context and head-redex. *)
Ltac do_step tac := Ltac do_step tac :=
try match goal with |- language.reducible _ _ => eexists _, _, _ end; try match goal with |- language.reducible _ _ => eexists _, _, _ end;
simpl; simpl;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment