From df03890491fc9c549376d26262b0be3707c00f59 Mon Sep 17 00:00:00 2001 From: Son Ho Date: Tue, 23 May 2023 14:47:26 +0200 Subject: Add the generated HOL4 files --- tests/hol4/misc-paper/paperScript.sml | 135 ++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 tests/hol4/misc-paper/paperScript.sml (limited to 'tests/hol4/misc-paper/paperScript.sml') diff --git a/tests/hol4/misc-paper/paperScript.sml b/tests/hol4/misc-paper/paperScript.sml new file mode 100644 index 00000000..4d6e99ba --- /dev/null +++ b/tests/hol4/misc-paper/paperScript.sml @@ -0,0 +1,135 @@ +(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *) +(** [paper] *) +open primitivesLib divDefLib + +val _ = new_theory "paper" + + +val ref_incr_fwd_back_def = Define ‘ + (** [paper::ref_incr] *) + ref_incr_fwd_back (x : i32) : i32 result = + i32_add x (int_to_i32 1) +’ + +val test_incr_fwd_def = Define ‘ + (** [paper::test_incr] *) + test_incr_fwd : unit result = + do + x <- ref_incr_fwd_back (int_to_i32 0); + if ~ (x = int_to_i32 1) then Fail Failure else Return () + od +’ + +(** Unit test for [paper::test_incr] *) +val _ = assert_return (“test_incr_fwd”) + +val choose_fwd_def = Define ‘ + (** [paper::choose] *) + choose_fwd (b : bool) (x : 't) (y : 't) : 't result = + if b then Return x else Return y +’ + +val choose_back_def = Define ‘ + (** [paper::choose] *) + choose_back (b : bool) (x : 't) (y : 't) (ret : 't) : ('t # 't) result = + if b then Return (ret, y) else Return (x, ret) +’ + +val test_choose_fwd_def = Define ‘ + (** [paper::test_choose] *) + test_choose_fwd : unit result = + do + z <- choose_fwd T (int_to_i32 0) (int_to_i32 0); + z0 <- i32_add z (int_to_i32 1); + if ~ (z0 = int_to_i32 1) + then Fail Failure + else ( + do + (x, y) <- choose_back T (int_to_i32 0) (int_to_i32 0) z0; + if ~ (x = int_to_i32 1) + then Fail Failure + else if ~ (y = int_to_i32 0) then Fail Failure else Return () + od) + od +’ + +(** Unit test for [paper::test_choose] *) +val _ = assert_return (“test_choose_fwd”) + +Datatype: + (** [paper::List] *) + list_t = | ListCons 't list_t | ListNil +End + +val [list_nth_mut_fwd_def] = DefineDiv ‘ + (** [paper::list_nth_mut] *) + list_nth_mut_fwd (l : 't list_t) (i : u32) : 't result = + (case l of + | ListCons x tl => + if i = int_to_u32 0 + then Return x + else (do + i0 <- u32_sub i (int_to_u32 1); + list_nth_mut_fwd tl i0 + od) + | ListNil => Fail Failure) +’ + +val [list_nth_mut_back_def] = DefineDiv ‘ + (** [paper::list_nth_mut] *) + list_nth_mut_back (l : 't list_t) (i : u32) (ret : 't) : 't list_t result = + (case l of + | ListCons x tl => + if i = int_to_u32 0 + then Return (ListCons ret tl) + else ( + do + i0 <- u32_sub i (int_to_u32 1); + tl0 <- list_nth_mut_back tl i0 ret; + Return (ListCons x tl0) + od) + | ListNil => Fail Failure) +’ + +val [sum_fwd_def] = DefineDiv ‘ + (** [paper::sum] *) + sum_fwd (l : i32 list_t) : i32 result = + (case l of + | ListCons x tl => do + i <- sum_fwd tl; + i32_add x i + od + | ListNil => Return (int_to_i32 0)) +’ + +val test_nth_fwd_def = Define ‘ + (** [paper::test_nth] *) + test_nth_fwd : unit result = + let l = ListNil in + let l0 = ListCons (int_to_i32 3) l in + let l1 = ListCons (int_to_i32 2) l0 in + do + x <- list_nth_mut_fwd (ListCons (int_to_i32 1) l1) (int_to_u32 2); + x0 <- i32_add x (int_to_i32 1); + l2 <- list_nth_mut_back (ListCons (int_to_i32 1) l1) (int_to_u32 2) x0; + i <- sum_fwd l2; + if ~ (i = int_to_i32 7) then Fail Failure else Return () + od +’ + +(** Unit test for [paper::test_nth] *) +val _ = assert_return (“test_nth_fwd”) + +val call_choose_fwd_def = Define ‘ + (** [paper::call_choose] *) + call_choose_fwd (p : (u32 # u32)) : u32 result = + let (px, py) = p in + do + pz <- choose_fwd T px py; + pz0 <- u32_add pz (int_to_u32 1); + (px0, _) <- choose_back T px py pz0; + Return px0 + od +’ + +val _ = export_theory () -- cgit v1.2.3