Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

compiler proof: Fixed the uabsfuns declaration #406

Open
wants to merge 34 commits into
base: master
Choose a base branch
from

Conversation

Cheunglo
Copy link

This commit fixes the declaration of the uabsfuns, i.e. the xi_0 and
xi_1 terms in the corres theorems. These are now declared as Isabelle
constants, which users can overload later on whilst theorems using these
constants will still remain true.

One minor fix is fixing the make file for the system-abstract-verif
example. It now copies the typing table to a file that Isabelle expects
to exist.

@Cheunglo Cheunglo force-pushed the uabsfuns-decl-fix branch 2 times, most recently from a9e626e to c38c5c7 Compare September 12, 2021 11:25
Louis Cheung and others added 28 commits December 8, 2021 18:12
This commit fixes the declaration of the uabsfuns, i.e. the xi_0 and
xi_1 terms in the corres theorems. These are now declared as Isabelle
constants, which users can overload later on whilst theorems using these
constants will still remain true.

One minor fix is fixing the make file for the system-abstract-verif
example. It now copies the typing table to a file that Isabelle expects
to exist.
This commit contains a general for loop that can be accessed through the
FFI. The core files relating to the refinement proofs are:
    * RepeatUpdate.thy: contains the embedding of the for loop in the
      update semantics and proofs about preservation, early termination
      and invariants.
    * RepeatValue.thy: contains the embedding of the for loop in the
      value semantics and proofs about preservation
    * RepeatCorres.thy: contains the refinement proof between the C and
      update semantics for the for loop. Note that this proof is
      specific to this example.
    * RepeatCorrespondence.thy contains the correspondence and upward
      propagation proof for the general for loop.
This commit includes the monomorphisation proof for the general for loop
"repeat". The embeddings in the update and value semantics were modified
so that this could be proved, and the other proofs were updated
to account for these changes.
Changes:
    * added some general helper lemmas
    * rearranged the layout of some files
    * added wrapper theorems about the repeat loop for
      preservation, mono-correspondence, and monomorphisation
Two new files were added. These are "UpdateSemHelper.thy" and
"ValueSemHelper.thy". These two files contain helper lemmas and
definitions that are not specific to repeat.

Proofs showing that the update and value semantics are deterministic
if the abstract functions are deterministic were added.

Proofs showing that evaluation and preservation of abstract functions
in the update and value semantics are occurs for the same expressions
and arguments for an abstract function environment (xi) if it occurs
for a smaller abstract function environment were added.

Similarly, proofs for corres and correspondence of abstract functions
(for certain cases) were also added.
This commit contains a generalised proof about correspondence between
the generated C code for repeat and its update semantics embedding.

This commit also reorders and generalised the theorems for less than and
determinism on relations.
This commit adds the fixes from upd-abstyping-fix and also adds the
abstract typing context to the abstyping and value relation for abstract
types. This enables the abstyping and value relation to use the
abstyping and value relations of any of its parent locales.
… proofs

The first change allows users to pass values and types to the heap
relation and value relation generation to either add or ignore those
types and values for the generation.

Proofs for preservation (update and value semantics), correspondence
and upward propagation between the update and value, and
monomorphisation for them length, get and put methods for word arrays
have been added.

Additional proofs about typing, value typing, monomorphisation and
correspondence in general were also added.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants