theory Context_Notation imports Main begin locale apply_context_notation = fixes apply_context :: "'c ⇒ 't ⇒ 't" begin notation apply_context (‹_⟨_⟩› [1000, 0] 1000) end locale hole_notation = fixes hole :: "'c" begin notation hole (‹□›) end locale compose_context_notation = fixes compose_context :: "'c ⇒ 'c ⇒ 'c" begin notation compose_context (infixl ‹∘⇩c› 75) end locale context_notation = apply_context_notation + hole_notation + compose_context_notation end