diff options
author | 2016-04-17 21:30:20 -0400 | |
---|---|---|
committer | 2016-06-22 13:43:18 -0400 | |
commit | d1a574728e83c7e640e7c24f37124adb4839afd0 (patch) | |
tree | 9540cc3a9e425344bda8601904357278eaf08ddc /src/Assembly/AlmostConversion.v | |
parent | 0e873baff11d8abbe9696d2bb137e73576d3857d (diff) |
Assembly converted except String and Gallina conversions
Hypothesis-based Bounded Words
Hypothesis-based Bounded Words
Diffstat (limited to 'src/Assembly/AlmostConversion.v')
-rw-r--r-- | src/Assembly/AlmostConversion.v | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/src/Assembly/AlmostConversion.v b/src/Assembly/AlmostConversion.v index 16638af78..4b66c8128 100644 --- a/src/Assembly/AlmostConversion.v +++ b/src/Assembly/AlmostConversion.v @@ -16,36 +16,31 @@ Module AlmostConversion <: Conversion AlmostQhasm Qhasm. | AAssign a => [ QAssign a ] | AOp a => [ QOp a ] | ACond c a b => - let els := N.to_nat (N.shiftl 1 label0) in - let finish := S els in - [QJmp (invertConditional c) els] ++ - (almostToQhasm' a label1) ++ - [QJmp TestTrue finish] ++ - [QLabel els] ++ + let tru := N.to_nat (N.shiftl 1 label0) in + let finish := S tru in + [QJmp c tru] ++ (almostToQhasm' b label1) ++ + [QJmp TestTrue finish] ++ + [QLabel tru] ++ + (almostToQhasm' a label1) ++ [QLabel finish] | AWhile c a => let start := N.to_nat (N.shiftl 1 label0) in - let finish := S start in - [ QJmp (invertConditional c) finish ; + let test := S start in + [ QJmp TestTrue test ; QLabel start ] ++ (almostToQhasm' a label1) ++ - [ QJmp c start; - QLabel finish ] + [ QLabel test; + QJmp c start ] end. Definition convertProgram (prog: AlmostQhasm.Program) := Some (almostToQhasm' prog 0%N). Definition convertState (st: Qhasm.State): option AlmostQhasm.State := Some st. - Lemma convert_spec: forall st' prog, - match ((convertProgram prog), (convertState st')) with - | (Some prog', Some st) => - match (Qhasm.eval prog' st') with - | Some st'' => AlmostQhasm.eval prog st = (convertState st'') - | _ => True - end - | _ => True - end. + Lemma convert_spec: forall a a' b b' prog prog', + convertProgram prog = Some prog' -> + convertState a = Some a' -> convertState b = Some b' -> + Qhasm.evaluatesTo prog' a b <-> AlmostQhasm.evaluatesTo prog a' b'. Admitted. End AlmostConversion. |