aboutsummaryrefslogtreecommitdiffstats
From mininix Require Export evallang.interp.
From stdpp Require Import options.

Import evallang.

Definition interp' (n : nat) (s : string) : res val :=
  interp n ∅ (EEval ∅ (EString s)).

Lemma test_1_a : interp' 1000 ("(x: x) ""s""") = mret (VString "s").
Proof. by vm_compute. Qed.
Lemma test_1_b : interp' 1000 ("(""x"": x) ""s""") = mret (VString "s").
Proof. by vm_compute. Qed.
Lemma test_1_c : interp' 1000 ("((y:y) ""x"": x) ""s""") = mret (VString "s").
Proof. by vm_compute. Qed.
Lemma test_1_d : interp' 1000 ("(((y:y) ""x""): x) ""s""") = mret (VString "s").
Proof. by vm_compute. Qed.

Lemma test_2 : interp' 1000 ("(x: y: eval! y) ""s"" ""x""") = mret (VString "s").
Proof. by vm_compute. Qed.

Lemma test_3 : interp' 1000 ("eval! ""x: x"" ""s""") = mret (VString "s").
Proof. by vm_compute. Qed.

Lemma test_4_a :
  interp' 1000 ("(x: y: eval! y) ""s"" ""x""") = mret (VString "s").
Proof. by vm_compute. Qed.
Lemma test_4_b :
  interp' 1000 ("eval! ""(x: y: eval! y) \""s\"" \""x\""""") = mret (VString "s").
Proof. by vm_compute. Qed.

Lemma test_5 :
  interp' 1000 ("(x: y: eval! ""x: x"" (eval! y)) ""s"" ""x""") = mret (VString "s").
Proof. by vm_compute. Qed.