include "Clight/Cexec.ma". include "common/Animation.ma". definition myprog := mk_program (\lambda _. clight_fundef) ((list init_data) × type) [][〈ident_of_nat 0 (* main *), CL_Internal ( mk_function (Tint I32 Signed ) [] [〈ident_of_nat 1, (Tint I32 Unsigned)〉 ; 〈ident_of_nat 2, (Tint I8 Unsigned )〉 ] (Ssequence (Sassign (Expr (Evar (ident_of_nat 1)) (Tint I32 Unsigned)) (Expr (Ecast (Tint I32 Unsigned) (Expr (Econst_int I32 (repr ? 16)) (Tint I32 Signed ))) (Tint I32 Unsigned))) (Ssequence (Sassign (Expr (Evar (ident_of_nat 2)) (Tint I8 Unsigned )) (Expr (Ecast (Tint I8 Unsigned ) (Expr (Econst_int I32 (repr ? 0)) (Tint I32 Signed ))) (Tint I8 Unsigned ))) (Ssequence (Swhile (Expr (Ebinop Odiv (Expr (Evar (ident_of_nat 1)) (Tint I32 Unsigned)) (Expr (Ecast (Tint I32 Unsigned) (Expr (Econst_int I32 (repr ? 2)) (Tint I32 Signed ))) (Tint I32 Unsigned))) (Tint I32 Unsigned)) (Ssequence (Sassign (Expr (Evar (ident_of_nat 1)) (Tint I32 Unsigned)) (Expr (Ebinop Osub (Expr (Evar (ident_of_nat 1)) (Tint I32 Unsigned)) (Expr (Ecast (Tint I32 Unsigned) (Expr (Econst_int I32 (repr ? 1)) (Tint I32 Signed ))) (Tint I32 Unsigned))) (Tint I32 Unsigned))) (Sassign (Expr (Evar (ident_of_nat 2)) (Tint I8 Unsigned )) (Expr (Ecast (Tint I8 Unsigned ) (Expr (Ebinop Oadd (Expr (Ecast (Tint I32 Signed ) (Expr (Evar (ident_of_nat 2)) (Tint I8 Unsigned ))) (Tint I32 Signed )) (Expr (Econst_int I32 (repr ? 1)) (Tint I32 Signed ))) (Tint I32 Signed ))) (Tint I8 Unsigned ))))) (Sreturn (Some expr (Expr (Ecast (Tint I32 Signed ) (Expr (Evar (ident_of_nat 2)) (Tint I8 Unsigned ))) (Tint I32 Signed ))))))) )〉] (ident_of_nat 0) . (* example exec: result ? (exec_up_to clight_fullexec myprog 1000 [EVint I32 (repr I32 0)]). normalize (* you can examine the result here *) *)