aboutsummaryrefslogtreecommitdiffstats
path: root/theories/lambda/operational_props.v
diff options
context:
space:
mode:
Diffstat (limited to 'theories/lambda/operational_props.v')
-rw-r--r--theories/lambda/operational_props.v29
1 files changed, 29 insertions, 0 deletions
diff --git a/theories/lambda/operational_props.v b/theories/lambda/operational_props.v
new file mode 100644
index 0000000..c331924
--- /dev/null
+++ b/theories/lambda/operational_props.v
@@ -0,0 +1,29 @@
1From mininix Require Export lambda.operational.
2From stdpp Require Import options.
3
4Module Import lambda.
5Export lambda.
6
7(** Properties of operational semantics *)
8Lemma step_not_final e1 e2 : e1 --> e2 → ¬final e1.
9Proof. induction 1; inv 1; naive_solver. Qed.
10Lemma final_nf e : final e → nf step e.
11Proof. by intros ? [??%step_not_final]. Qed.
12
13Lemma SAppL_rtc e1 e1' e2 : e1 -->* e1' → EApp e1 e2 -->* EApp e1' e2.
14Proof. induction 1; repeat (done || econstructor). Qed.
15
16Ltac inv_step := repeat
17 match goal with H : ?e --> _ |- _ => assert_fails (is_var e); inv H end.
18
19Lemma step_det e d1 d2 :
20 e --> d1 →
21 e --> d2 →
22 d1 = d2.
23Proof.
24 intros Hred1. revert d2.
25 induction Hred1; intros d2 Hred2; inv Hred2; try by inv_step.
26 f_equal. by apply IHHred1.
27Qed.
28
29End lambda.