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