Documentation

Cedar.Thm.SymCC.Compiler.Args

This file contains utility lemmas for proving compilation theorems about lists of argument terms. #

theorem Cedar.Thm.compile_wfs {xs : List Spec.Expr} {εnv : SymCC.SymEnv} {ts : List SymCC.Term} (hwφ : ∀ (x : Spec.Expr), x ∈ xs → εnv.WellFormedFor x) (hok : List.Forall₂ (fun (x : Spec.Expr) (t : SymCC.Term) => SymCC.compile x εnv = Except.ok t) xs ts) (t : SymCC.Term) :
theorem Cedar.Thm.compile_interpret_ihs {xs : List Spec.Expr} {εnv : SymCC.SymEnv} {I : SymCC.Interpretation} {ts : List SymCC.Term} (hI : I.WellFormed εnv.entities) (hwε : ∀ (x : Spec.Expr), x ∈ xs → εnv.WellFormedFor x) (ih : ∀ (x : Spec.Expr), x ∈ xs → CompileInterpret x) (hok : List.Forall₂ (fun (x : Spec.Expr) (t : SymCC.Term) => SymCC.compile x εnv = Except.ok t) xs ts) :
theorem Cedar.Thm.compile_evaluate_ihs {ts : List SymCC.Term} {xs : List Spec.Expr} {env : Spec.Env} {εnv : SymCC.SymEnv} (heq : env ∼ εnv) (hwe : ∀ (x : Spec.Expr), x ∈ xs → env.WellFormedFor x) (hwε : ∀ (x : Spec.Expr), x ∈ xs → εnv.WellFormedFor x) (ih : ∀ (x : Spec.Expr), x ∈ xs → CompileEvaluate x) (hok : List.Forall₂ (fun (x : Spec.Expr) (t : SymCC.Term) => SymCC.compile x εnv = Except.ok t) xs ts) :
List.Forall₂ (fun (x : Spec.Expr) (t : SymCC.Term) => Spec.evaluate x env.request env.entities ∼ t) xs ts