Created
December 28, 2013 08:02
-
-
Save yoshihiro503/8157184 to your computer and use it in GitHub Desktop.
Equiv_Jの練習問題assign_equivの証明 #ProofCafe ref: http://qiita.com/yoshihiro503/items/5a6eb6f0c8d2b96c4d4c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(** **** 練習問題: ★★, recommended (assign_aequiv) *) | |
Theorem assign_aequiv : forall X e, | |
aequiv (AId X) e -> | |
cequiv SKIP (X ::= e). | |
Proof. | |
move=> X e H. split => HH. | |
- inversion HH. subst. | |
assert (st' = update st' X (st' X)). | |
- apply functional_extensionality => x. | |
by rewrite update_same; reflexivity. | |
- set (Hass := E_Ass st' e (st' X) X). | |
rewrite <- H0 in Hass. apply Hass. | |
rewrite <- (H st'). reflexivity. | |
- inversion HH. subst. | |
replace (update st X (aeval st e)) with st. | |
- constructor. | |
- apply functional_extensionality => x. | |
rewrite <- (H st). | |
rewrite update_same; reflexivity. | |
Qed. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment