2026-06-23 10:23:44 -05:00
|
|
|
|
import Mathlib.Tactic.TypeStar
|
|
|
|
|
|
|
2026-06-25 15:39:51 -05:00
|
|
|
|
/-!
|
|
|
|
|
|
|
|
|
|
|
|
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. -/
|
|
|
|
|
|
|
2026-06-23 10:23:44 -05:00
|
|
|
|
namespace Spa
|
|
|
|
|
|
|
2026-06-25 15:39:51 -05:00
|
|
|
|
/-- A type `α` that implements this class has denotation / meaning
|
|
|
|
|
|
in the semantic domain `dom`. -/
|
2026-06-23 10:23:44 -05:00
|
|
|
|
class Interp (α : Type*) (dom : outParam Type*) where
|
|
|
|
|
|
interp : α → dom
|
|
|
|
|
|
|
|
|
|
|
|
notation:max (priority := high) "⟦" v "⟧" => Interp.interp v
|
|
|
|
|
|
|
|
|
|
|
|
end Spa
|