import Mathlib.Tactic.TypeStar

/-!

# Interpretation to a Semantic Domain

This file serves to introduce the double-angle-bracket "denotation"
notation by prodiving a class instance `Interp`, whose single
method `interp` is what the double brackets map to. -/

namespace Spa

/-- A type `α` that implements this class has denotation / meaning
   in the semantic domain `dom`. -/
class Interp (α : Type*) (dom : outParam Type*) where
  interp : α → dom

notation:max (priority := high) "⟦" v "⟧" => Interp.interp v

end Spa
