| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |/ /
| | |
| | |
| | | |
This is a test lemma, I may remove the exists predicate later.
|
| | | |
|
|/ / |
|
| |
| |
| |
| |
| | |
Turns two rewrites and a simplification into a single rewrite via
list_length_z_cons.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Added exec_body_simulation_star' in order to prove it.
exec_body_simulation_star' could also be used to prove
exec_body_simulation_star directly (without using
exec_body_simulation_plus). However, at least the way I did it the proof
turns out to be longer.
eexec_body_simulation_plus is still required/useful for
exec_bblock_simulation.
|
| | |
|
| |
| |
| |
| | |
Probably still missing a couple of assumptions.
|
| |
| |
| |
| |
| |
| | |
Modify Asmblock.preg to combine iregsp and freg into dreg (dreg might be
a misnomer since not all iregs are data regs)
TODO: Adjust names of PArithP, PArithPP and the like
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
- Remove one auto-generated name
- Move assertion on n's size up
- Clear unnecessary hypothesis (iirc generalize worked better than
exploit here)
- Rewrite progress of Asm.find_instr only in the case that needs it
|
| |
| |
| |
| | |
Cleanup is still TODO
|
| |
| |
| |
| |
| | |
n points to neither label nor basic instruction but there is also no
final exit instruction
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
The previous version of unfold_bblock was copied from kvx/Asm.v. kvx's
version is slightly different in that for the (here removed) special
case it does not put a semicolon to separate bundles. Since aarch64 does
not have kvx's bundles the two versions should be equivalent.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Proves exec_exit_simulation_plus for cf_instruction (as opposed to
builtins)
|
| |
| |
| |
| |
| | |
exec_cfi_simulation's rephrasing is inspired by the needs of
exec_exit_simulation_plus.
|
| |
| |
| |
| | |
Mostly proving the absurd cases following inversion of is_nth_inst
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
This way exec_header_simulation does not break (without any changes).
Depending on the base case of find_instr_bblock this may need to change
again.
|
| | |
|
| |
| |
| |
| |
| | |
unfolding a non-empty list of basic blocks will unfold the head
(unfold_bblock) and then recur on the tail.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Steal use of list_length_z_aux_increase from exec_header_simulation.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Previously Asmblock.label_pos and Asm.label_pos could point to different
memory location for the same label.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Import Axioms in order to use functional extensionality
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
This relation will hold between Asmblock and Asm states while inside an
Asmblock block.
|
| |
| |
| |
| |
| |
| | |
instructions otherwise the offset part of the [PC] code pointer could wrap around, leading to incorrect executions"
-- From the original aarch64/Asmgen.v
|
| |
| |
| |
| |
| |
| |
| | |
In Asmblock, Pcsel is used for both integer and floating-point
conditional selection.
A previous commit (c764ff84) had incorrectly reverted the merging of
Pfsel into Pcsel.
|
| |
| |
| |
| | |
(The simulation relation between aarch64's Asmblock and Asm as equality)
|
| |
| |
| |
| | |
Due to the fact that, at the Asm level, Plabel runs PC++
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Introduce agree which says that all registers *except* the PC return the
same values.
The idea behind this change is that agree can be preserved across e.g.
an Asmblock basic step, which does not update the PC.
In addition to agree, the simualation relation requires the PC to agree.
Right now the memory needs to be exactly the same which could be a
problem.
Since Asmblock's and Asm's set_pair is defined with preg it is more
difficult to show that set_pair preserves the agree relation since SP is
a preg and must not be Vundef. This commit does not solve the problem.
|
| |
| |
| |
| |
| |
| | |
- Define simulation relation as equality.
- Prove the easy cases, transf_initial_states, transf_final_states, and
begin with the proof for the step simulation (external calls)
|
| | |
|