fact: Fixpoint evalA (s:state) (e:aExp) {struct e} : option Z := match e with | aPlus e1 e2 => match evalA s e1, evalA s e2 with | Some n1, Some n2 => Some (n1 + n2)%Z | _, _ => None (A:=Z) end | aNum n => Some n | aVar n => lookup n s end.
imports: ZArith Zwf Inverse_Image Wellfounded Extraction List Arith Compare_dec Lia