History log of /seL4-l4v-10.1.1/l4v/proof/invariant-abstract/ARM/ArchInvariants_AI.thy
Revision Date Author Comments
# 611ec8c5 30-Oct-2018 Santiago Bautista <santiago.bautista@data61.csiro.au>

ainvs: changed definition of `valid_idle` + `idle_tcb_at` ; defined `valid_arch_idle` invariant

* Context :

We would like to prove that, for ARM_HYP architecture,
the current vcpu is always the vcpu associated to the current thread.
See issue https://jira.csiro.au/browse/VER-770
and PR 291 http://bitbucket.keg.ertos.in.nicta.com.au/projects/SEL4/repos/l4v/pull-requests/291

* Intermediate step : the vcpu of the idle thread is always none

In this commit, we modify the `valid_idle` invariant so that it includes
the fact that the vcpu of the idle thread is always None.
This is needed for PR291 (see Context above).
`valid_idle` beeing defined with `idle_tcb_at`,
we changed the definition of `idle_tcb_at`
so that it can convey information about the architecture.
And we defined `valid_arch_idle`
that states that the vcpu of an iarch_tcb is None.

* What changed :

Even if these changes are only interesting for the
abstract invariants for arm_hyp architecture
(that are being extended),
it implied changes to several generic and architecture-specific
files of the astract invariants (AInvs) sessions.

Co-authored-by : Corey Lewis <corey.lewis@data61.csiro.au>
Co-authored-by : Santiago Bautista <santiago.bautista@data61.csiro.au>


# 011e0845 09-Jun-2018 Gerwin Klein <gerwin.klein@data61.csiro.au>

Isabelle2018: new comment syntax

(result of "isabelle update_comments <dirs>")


# 97c24b95 11-Jun-2018 Corey Lewis <corey.lewis@data61.csiro.au>

ainvs: Add itcb_arch to the itcb projection

This allows us to more easily show that arch specific tcb fields are
preserved by many functions of the spec. For ARM_HYP we add a
projection for the tcb_vcpu field.


# 16346084 03-Apr-2018 Joel Beeren <joel.beeren@data61.csiro.au>

arm: ioportcontrol: Fixes after adding IOPortControlCaps to x64


# 652cbb96 14-Mar-2018 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Initial proof updates for combinator changes.


# 8601dce6 23-Feb-2018 Gerwin Klein <gerwin.klein@data61.csiro.au>

ARM ainvs: proof update for user_context refactor


# 4601f2a1 06-Feb-2018 Joel Beeren <joel.beeren@data61.csiro.au>

Genericise deletion actions that occur after empty_slot

This patch adds a generic "post_cap_deletion" step that is called by
finalise_slot. Previous to this, the only caps which had actions
required at this stage were IRQHandlerCaps -- it was required that the
IRQ bitmap be updated after the cap itself was removed (as the
invariants state that for any existing IRQHandlerCap, the corresponding
bit in the IRQ bitmap must be set).

By genericising this, we add the capacity for new, arch-specific post
cap deletion actions to occur in the future.


# 8753c05b 31-Oct-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Expand eval_bool; add a method word_eqI_solve.

A number of proofs begin with word_eqI followed by some similar steps,
suggesting a 'word_eqI_solve' proof method, which is implemented here.

Many of these steps are standard, however a tricky part is that constants of
type 'nat' which encode a particular number of bits must often be unfolded.
This was done by expanding the eval_bool machinery to add eval_int_nat, which
tries to evaluate ints and nats.

Testing eval_int_nat revealed the need to improve the code generator setup
somewhat. The Arch locale contains many of the relevant constants, and they are
given global names via requalify_const, but the code generator doesn't know
about them. Some tweaks make them available. I *think* this is safe for
arch_split, as long as the proofs that derive from them are true in each
architecture.


# 55d50c7b 17-Aug-2017 Miki Tanaka <miki.tanaka@nicta.com.au>

arm/arm_hyp ainvs: rename wellformed_arch_obj to arch_valid_obj


# 6d8e9170 19-Jul-2017 Miki Tanaka <miki.tanaka@nicta.com.au>

Remove valid_arch_objs

now that we have valid_vspace_objs to express validiy of
vspace objects, we do not need valid_arch_objs: we have
valid_objs to state the validity of non-vspace arch objects.


# 2f70a304 09-Aug-2017 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

ainvs: integrate all architectures


# 796887d9 11-Jul-2017 Alejandro Gomez-Londono <alejandro.gomez@nicta.com.au>

Removes all trailing whitespaces


# 702bfecd 17-May-2017 Joel Beeren <joel.beeren@nicta.com.au>

ainvs: reintroduce second_level_tables all over the place, update generic Arch_AI and various ArchArch_AI's to match


# 993f6a01 16-May-2017 Miki Tanaka <miki.tanaka@nicta.com.au>

arm ainvs: Updated up to ArchFinalise_AI


# bf077ac6 28-Mar-2017 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

ainvs x64 arm: remove canonical_address check from do_user_op

For x64, move the check to get_page_info, which is arch-specific.

This means there is no longer any need for canonical_address to be
defined for ARM.


# 6f3efc50 27-Mar-2017 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

arch_split x64 arm: make endpoint_bits and ntfn_bits arch constants


# 42ff16ed 14-Mar-2017 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

x64: fix sorry proofs in ArchAInvsPre_AI

The canonical_address constant (but not its definition) is now exported
to generic theories, and used in do_user_op. On ARM, all virtual
addresses are canonical.


# 9ac4d1ba 24-Jan-2017 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

x64: progress in Detype_AI

May need some additional work to ensure compatibility with vspace lookup
generalisation.


# 3dafec7d 25-Jan-2017 Joel Beeren <Joel.Beeren@nicta.com.au>

backport changes to ARM proofs from X64 work in progress

- replace ARM-specific constants and types with aliases which can be
instantiated separately for each architecture.
- expand lib with lemmas used in X64 proofs.
- simplify some proofs.

Also-by: Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>


# 47119bf4 13-Jan-2017 Gerwin Klein <gerwin.klein@nicta.com.au>

wp_cleanup: update proofs for new wp behaviour

The things that usually go wrong:
- wp fall through: add +, e.g.
apply (wp select_wp) -> apply (wp select_wp)+

- precondition: you can remove most hoare_pre, but wpc still needs it, and
sometimes the wp instance relies on being able to fit a rule to the
current non-schematic precondition. In that case, use "including no_pre"
to switch off the automatic hoare_pre application.

- very rarely there is a schematic postcondition that interferes with the
new trivial cleanup rules, because the rest of the script assumes some
specific state afterwards (shouldn't happen in a reasonable proof, but
not all proofs are reasonable..). In that case, (wp_once ...)+ should
emulate the old behaviour precisely.


# 41d4aa4f 25-Oct-2016 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

Isabelle2016-1: update references to renamed constants and facts


# 5b11be92 17-Nov-2016 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

invariants: move bexEI to a generic theory


# f21d06d3 01-Dec-2016 Joel Beeren <joel.beeren@nicta.com.au>

AInvs: remove 32-bit references in Untyped_AI


# a2d707d1 14-Aug-2016 Miki Tanaka <miki.tanaka@nicta.com.au>

SELFOUR-553: update rpidrurw in TCBConfigure for simpler Infoflow proofs.


# f8f88c69 03-Aug-2016 Miki Tanaka <miki.tanaka@nicta.com.au>

SELFOUR-553: Change Spec according to C code and fix ASpec and AInvs


# 8d4a8eb2 21-Sep-2016 Xin,Gao <xin.gao@nicta.com.au>

SELFOUR-421: fix coding style


# 1013e959 30-Jul-2016 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

arch_split: give some vspace concepts more generic names

In particular rename "pd" to "vspace", when the pd represents
an address space.


# aceb021f 13-May-2016 Matthew Brecknell <Matthew.Brecknell@nicta.com.au>

arch_split: invariants: split Retype_AI [VER-556]


# 9d58764b 31-May-2016 Joel Beeren <joel.beeren@nicta.com.au>

x64: Invariants_AI now processes, removed some arch-specific types


# 322f1023 18-Apr-2016 Gerwin Klein <gerwin.klein@nicta.com.au>

word_lib: adjust theory dependencies


# 9ceed1eb 03-May-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: fix proofs after removing shadow and unqualify commands and adding fix for crunch. Checks up to DPolicy.


# 1d20b393 26-Apr-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: replaced sublocale with global_naming


# 04362dba 07-Apr-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: some quick and dirty arch_splitting by selectively interpreting the ARM locale (with FIXMEs)


# ab09d49b 05-Apr-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: checkpoint. Checks up to ArchVSpace_AI with two sorries (MattB WIP)


# f89279e3 24-Mar-2016 Matthew Brecknell <Matthew.Brecknell@nicta.com.au>

arch_split: reworking predicates about arch objects and types


# f2cc8d7c 17-Mar-2016 Matthew Brecknell <Matthew.Brecknell@nicta.com.au>

arch_split: invariants: progress in ArchADT_AI


# b679b00f 04-Mar-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: initial attempt at redefining invariants to avoid changing too many proofs


# 5e2f9a5e 03-Mar-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: change caps_of_state to be explicit projection f caps_of_state


# cdc0a840 01-Mar-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: change aobj_at to definition instead of abbreviation


# 95872687 29-Feb-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: finished KHeap_AI


# d107cb67 21-Feb-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: halfway into KHeap_AI


# df8261c1 16-Feb-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: split up Invariants_AI


# 1018d01b 04-Feb-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: More namespacing progress and invariant splitting. Checks halfway into Invariants_AI


# 9718f1bd 04-Feb-2016 Daniel Matichuk <daniel.matichuk@nicta.com.au>

arch_split: progress on namespacing abstract spec