Commit Graph

1 Commits

Author SHA1 Message Date
Nicolas Méric 756f2b66f1 Add very deep interpretation
Use metalogic to generate meta term anti-quotations

The idea is for the Very_Deep_Interpretation
to source the shallow material,
and then update the checking and elaboration functions
of the term anti-quotations.
To achieve this, the mechanism of removing and readding the notations
(mixfixes) of the term-antiquotations after the metalogic
is sourced is used.

Example:

With shallow:

datatype "typ" = ISA_typ string  ("@{typ _}")

Generate a datatype whose Constructor ISA_typ has
the notation @{typ ...}.

You get:

find_consts name:"ISA_typ"

find_consts
  name: "ISA_typ"

found 1 constant(s):
  Shallow_Interpretation.typ.ISA_typ :: "char list ⇒ typ"

With Deep:

no_notation "ISA_typ" ("@{typ _}")

consts ISA_typ :: "string ⇒ typ" ("@{typ _}")

The notation is removed and then added to the new ISA_typ constant.

You get:

find_consts name:"ISA_typ"

find_consts
  name: "ISA_typ"

found 2 constant(s):
  Deep_Interpretation.ISA_typ :: "char list ⇒ Core.typ"
  Shallow_Interpretation.typ.ISA_typ :: "char list ⇒ Shallow_Interpretation.typ"

But only the Deep_Interpretation constant has the notation (mixfix).

Then new interpretation of term anti-quotations is available
for the user.
2023-01-18 11:55:22 +01:00