Theory HasESem

theory HasESem
imports Nominal-HOLCF Env-HOLCF
theory HasESem
imports "Nominal-HOLCF" "Env-HOLCF"
begin

text {*
A local to work abstract in the expression type and semantics.
*}

locale has_ESem =
  fixes ESem :: "'exp::pt ⇒ ('var::at_base ⇒ 'value) → 'value::{pure,pcpo}" 
begin
  abbreviation ESem_syn ("⟦ _ ⟧_"  [0,0] 110) where "⟦e⟧ρ ≡ ESem e ⋅ ρ"
end

locale has_ignore_fresh_ESem = has_ESem +
  assumes fv_supp: "supp e = atom ` (fv e :: 'b set)"
  assumes ESem_considers_fv: "⟦ e ⟧ρ = ⟦ e ⟧ρ f|` (fv e)"

end