Stash th2.3 for now
This commit is contained in:
parent
c49f9d3f6e
commit
2431f66b07
1 changed files with 36 additions and 0 deletions
36
wp.v
36
wp.v
|
@ -109,6 +109,34 @@ Fixpoint interp (inst: Instr) (mem: MemCpo) : MemCpo :=
|
||||||
end
|
end
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Fixpoint nth_iterate (instr: Instr) (n: nat) : Instr :=
|
||||||
|
match n with
|
||||||
|
| 0 => skip
|
||||||
|
| S m => seq instr (nth_iterate instr m)
|
||||||
|
end.
|
||||||
|
|
||||||
|
Definition satisfies_expr (mem: MemCpo) (expr: Expr) : Prop := match mem with
|
||||||
|
| CpoError _ => False
|
||||||
|
| CpoElem _ mem0 => (expr mem0 <> 0) % Z
|
||||||
|
end.
|
||||||
|
Infix "|=e" := satisfies_expr (at level 32).
|
||||||
|
|
||||||
|
Definition expr_neg (expr: Expr) : Expr :=
|
||||||
|
fun mem => match expr mem with
|
||||||
|
| 0%Z => 1%Z
|
||||||
|
| _ => 0%Z
|
||||||
|
end.
|
||||||
|
|
||||||
|
Lemma certain_termination body guard mem :
|
||||||
|
interp (while guard body) mem <> MemError ->
|
||||||
|
exists n: nat,
|
||||||
|
(interp (nth_iterate body n) mem) |=e (expr_neg guard)
|
||||||
|
/\ forall p, p < n -> (interp (nth_iterate body p) mem) |=e guard
|
||||||
|
/\ interp (while guard body) mem = interp (nth_iterate body n) mem.
|
||||||
|
Proof.
|
||||||
|
intros notError.
|
||||||
|
Admitted.
|
||||||
|
|
||||||
(***** Validite, prouvabilite pour Hoare *************************************)
|
(***** Validite, prouvabilite pour Hoare *************************************)
|
||||||
|
|
||||||
Definition Assert := Mem -> Prop.
|
Definition Assert := Mem -> Prop.
|
||||||
|
@ -255,3 +283,11 @@ Proof.
|
||||||
unfold assertAnd. split.
|
unfold assertAnd. split.
|
||||||
+ assumption.
|
+ assumption.
|
||||||
+ rewrite <- Z.eqb_eq. congruence.
|
+ rewrite <- Z.eqb_eq. congruence.
|
||||||
|
- unfold conseq_or_bottom.
|
||||||
|
destruct (interp (while expr sBody) (MemElem mem)) eqn:interpRel.
|
||||||
|
* trivial.
|
||||||
|
* unfold assertAnd. split.
|
||||||
|
+ specialize (IHdeduction m) as IHdeduction_m.
|
||||||
|
unfold conseq_or_bottom in IHdeduction_m.
|
||||||
|
Admitted.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue