Theory Setup
theory Setup
imports Main
begin
ML_file ‹../antiquote_setup.ML›
ML_file ‹../more_antiquote.ML›
declare [[default_code_width = 74]]
syntax
"_alpha" :: "type" ("α")
"_alpha_ofsort" :: "sort ⇒ type" ("α' ::_" [0] 1000)
"_beta" :: "type" ("β")
"_beta_ofsort" :: "sort ⇒ type" ("β' ::_" [0] 1000)
parse_ast_translation ‹
let
fun alpha_ast_tr [] = Ast.Variable "'a"
| alpha_ast_tr asts = raise Ast.AST ("alpha_ast_tr", asts);
fun alpha_ofsort_ast_tr [ast] =
Ast.Appl [Ast.Constant \<^syntax_const>‹_ofsort›, Ast.Variable "'a", ast]
| alpha_ofsort_ast_tr asts = raise Ast.AST ("alpha_ast_tr", asts);
fun beta_ast_tr [] = Ast.Variable "'b"
| beta_ast_tr asts = raise Ast.AST ("beta_ast_tr", asts);
fun beta_ofsort_ast_tr [ast] =
Ast.Appl [Ast.Constant \<^syntax_const>‹_ofsort›, Ast.Variable "'b", ast]
| beta_ofsort_ast_tr asts = raise Ast.AST ("beta_ast_tr", asts);
in
[(\<^syntax_const>‹_alpha›, K alpha_ast_tr),
(\<^syntax_const>‹_alpha_ofsort›, K alpha_ofsort_ast_tr),
(\<^syntax_const>‹_beta›, K beta_ast_tr),
(\<^syntax_const>‹_beta_ofsort›, K beta_ofsort_ast_tr)]
end
›
end