Abstract
In this AFP entry, we formalize the core of the Document Object Model
(DOM). At its core, the DOM defines a tree-like data structure for
representing documents in general and HTML documents in particular. It
is the heart of any modern web browser. Formalizing the key concepts
of the DOM is a prerequisite for the formal reasoning over client-side
JavaScript programs and for the analysis of security concepts in
modern web browsers. We present a formalization of the core DOM, with
focus on the node-tree and the operations defined on node-trees, in
Isabelle/HOL. We use the formalization to verify the functional
correctness of the most important functions defined in the DOM
standard. Moreover, our formalization is 1) extensible, i.e., can be
extended without the need of re-proving already proven properties and
2) executable, i.e., we can generate executable code from our
specification.
License
Topics
Session Core_DOM
- Hiding_Type_Variables
- Ref
- Core_DOM_Basic_Datatypes
- BaseClass
- Heap_Error_Monad
- BaseMonad
- ObjectPointer
- ObjectClass
- ObjectMonad
- NodePointer
- NodeClass
- NodeMonad
- ElementPointer
- CharacterDataPointer
- DocumentPointer
- ShadowRootPointer
- ElementClass
- ElementMonad
- CharacterDataClass
- CharacterDataMonad
- DocumentClass
- DocumentMonad
- Core_DOM_Functions
- Core_DOM_Heap_WF
- Core_DOM
- Testing_Utils
- Core_DOM_BaseTest
- Document_adoptNode
- Document_getElementById
- Node_insertBefore
- Node_removeChild
- Core_DOM_Tests