referential-equivalence-first-draft #4
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "nicolas.meric/Isabelle_DOF:referential-equivalence-first-draft"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implement built-ins referential equivalence
for the built-ins term annotations (TA)
class instances without checking the instances type.
It must be avoided for certification
A major refactoring of code should be done to enable
referential equivalence for termrepr, by changing the dependency
between the Isa_DOF theory and the Assert theory.
The assert_cmd function in Assert should use the value* command
functions, which make the elaboration of the term
referenced by the TA before passing it to the evaluator
and expose some of current implementation limitations
Add a command value* - The value* command uses the same code as the value command and adds the possibility to evaluate Term Annotation Antiquotations (TA) with the help of the DOF_core.transduce_term_global function. The DOF_core.transduce_term_global function, in addition to the validation of a term (also called a second level type checking), is now able to make a so called elaboration: it will construct the term referenced by a TA before passing it to the evaluator. - For a term to be evaluated, it must not be contain the "undefined" constant whose evaluation always fails. (See the code generation documentation). Furthermore, the instance class generation is updated in such a way that each of its attributes is initialized with a free variable whose name shows to the final user that this attribute is not initialized. It implies that an instance class evaluation will be pass to the normalization by evaluation (nbe) evaluator by default if the final user does not specify a class instance entirely, i.e. by specifying each attribute of the instance. This choice is considered a decent compromise, considering the speed and trustworthiness of the nbe evaluator. (See the article A Compiled Implementation of Normalization by Evaluation from 2008) - Update the ISA transformer tab to add a function which is used for the elaboration of the term referenced by the TA.to pass - Add a first really basic draft of the implementation of the elaboration of the built-ins TA and of an instance class: - For the built-ins, the term referenced by the TA is returned as it is; - For an instance class, the value of the instance is returned. - Make the tag attribute global by moving it to DOF_core structure - Add a first draft for some evaluation tests and expose the limitations of the current implementation in Evaluation.thy- Add a first implementation of a referential equivalence for the built-ins term annotations (TA) - Some built-ins remain as unspecified constants: - the docitem TA offers a way to check the reference of class instances without checking the instances type. It must be avoided for certification - the termrepr TA is left as an unspecified constant for now. A major refactoring of code should be done to enable referential equivalence for termrepr, by changing the dependency between the Isa_DOF theory and the Assert theory. The assert_cmd function in Assert should use the value* command functions, which make the elaboration of the term referenced by the TA before passing it to the evaluator - Update the Evaluation test theory to test the referential equivalence and expose some of current implementation limitations - Add a warning about the docitem TA in the TermAntiquotations theory