Module CompEnv


Section QEnv.

  Require Import String List String EquivDec.
  
  Require Import BasicRuntime.


  Definition init_vid := "id"%string.
  Definition init_venv := "env"%string.
  Definition init_vinit := "init"%string.

  Context {fdata:foreign_data}.
  
  Definition lift_result res :=
    match res with
    | None => None
    | Some (dcoll l) => Some l
    | Some _ => None
    end.

  Require Import DData.

  Definition validate (oresult oexpected:option (list data))
    := match oresult, oexpected with
       | None, None => true
       | Some ((dcoll result)::nil), Some expected =>
         if permutation_dec result expected
         then true
         else false
       | _,_ => false
       end.
  Definition validate_success (oresult:option (list data)) (expected:list data)
    := validate oresult (Some expected).
  

  
  Definition validate_lifted_success (res:option data) exp : bool :=
    validate_success (lift_result res) exp.

End QEnv.

Ltac fast_refl := vm_compute; reflexivity.