diff options
-rw-r--r-- | tests/coq/misc/Constants.v | 36 | ||||
-rw-r--r-- | tests/coq/traits/Traits.v | 100 | ||||
-rw-r--r-- | tests/fstar/misc/Constants.fst | 36 | ||||
-rw-r--r-- | tests/fstar/traits/Traits.fst | 77 | ||||
-rw-r--r-- | tests/lean/Constants.lean | 36 | ||||
-rw-r--r-- | tests/lean/Traits.lean | 78 |
6 files changed, 297 insertions, 66 deletions
diff --git a/tests/coq/misc/Constants.v b/tests/coq/misc/Constants.v index 81240847..fcafed53 100644 --- a/tests/coq/misc/Constants.v +++ b/tests/coq/misc/Constants.v @@ -11,17 +11,17 @@ Module Constants. (** [constants::X0] Source: 'src/constants.rs', lines 5:0-5:17 *) Definition x0_body : result u32 := Return 0%u32. -Definition x0 : u32 := (x0_body)%global. +Definition x0 : u32 := x0_body%global. (** [constants::X1] Source: 'src/constants.rs', lines 7:0-7:17 *) Definition x1_body : result u32 := Return core_u32_max. -Definition x1 : u32 := (x1_body)%global. +Definition x1 : u32 := x1_body%global. (** [constants::X2] Source: 'src/constants.rs', lines 10:0-10:17 *) Definition x2_body : result u32 := Return 3%u32. -Definition x2 : u32 := (x2_body)%global. +Definition x2 : u32 := x2_body%global. (** [constants::incr]: Source: 'src/constants.rs', lines 17:0-17:32 *) @@ -31,7 +31,7 @@ Definition incr (n : u32) : result u32 := (** [constants::X3] Source: 'src/constants.rs', lines 15:0-15:17 *) Definition x3_body : result u32 := incr 32%u32. -Definition x3 : u32 := (x3_body)%global. +Definition x3 : u32 := x3_body%global. (** [constants::mk_pair0]: Source: 'src/constants.rs', lines 23:0-23:51 *) @@ -56,24 +56,24 @@ Definition mk_pair1 (x : u32) (y1 : u32) : result (Pair_t u32 u32) := (** [constants::P0] Source: 'src/constants.rs', lines 31:0-31:24 *) Definition p0_body : result (u32 * u32) := mk_pair0 0%u32 1%u32. -Definition p0 : (u32 * u32) := (p0_body)%global. +Definition p0 : (u32 * u32) := p0_body%global. (** [constants::P1] Source: 'src/constants.rs', lines 32:0-32:28 *) Definition p1_body : result (Pair_t u32 u32) := mk_pair1 0%u32 1%u32. -Definition p1 : Pair_t u32 u32 := (p1_body)%global. +Definition p1 : Pair_t u32 u32 := p1_body%global. (** [constants::P2] Source: 'src/constants.rs', lines 33:0-33:24 *) Definition p2_body : result (u32 * u32) := Return (0%u32, 1%u32). -Definition p2 : (u32 * u32) := (p2_body)%global. +Definition p2 : (u32 * u32) := p2_body%global. (** [constants::P3] Source: 'src/constants.rs', lines 34:0-34:28 *) Definition p3_body : result (Pair_t u32 u32) := Return {| pair_x := 0%u32; pair_y := 1%u32 |} . -Definition p3 : Pair_t u32 u32 := (p3_body)%global. +Definition p3 : Pair_t u32 u32 := p3_body%global. (** [constants::Wrap] Source: 'src/constants.rs', lines 49:0-49:18 *) @@ -91,7 +91,7 @@ Definition wrap_new (T : Type) (value : T) : result (Wrap_t T) := (** [constants::Y] Source: 'src/constants.rs', lines 41:0-41:22 *) Definition y_body : result (Wrap_t i32) := wrap_new i32 2%i32. -Definition y : Wrap_t i32 := (y_body)%global. +Definition y : Wrap_t i32 := y_body%global. (** [constants::unwrap_y]: Source: 'src/constants.rs', lines 43:0-43:30 *) @@ -101,12 +101,12 @@ Definition unwrap_y : result i32 := (** [constants::YVAL] Source: 'src/constants.rs', lines 47:0-47:19 *) Definition yval_body : result i32 := unwrap_y. -Definition yval : i32 := (yval_body)%global. +Definition yval : i32 := yval_body%global. (** [constants::get_z1::Z1] Source: 'src/constants.rs', lines 62:4-62:17 *) Definition get_z1_z1_body : result i32 := Return 3%i32. -Definition get_z1_z1 : i32 := (get_z1_z1_body)%global. +Definition get_z1_z1 : i32 := get_z1_z1_body%global. (** [constants::get_z1]: Source: 'src/constants.rs', lines 61:0-61:28 *) @@ -121,17 +121,17 @@ Definition add (a : i32) (b : i32) : result i32 := (** [constants::Q1] Source: 'src/constants.rs', lines 74:0-74:17 *) Definition q1_body : result i32 := Return 5%i32. -Definition q1 : i32 := (q1_body)%global. +Definition q1 : i32 := q1_body%global. (** [constants::Q2] Source: 'src/constants.rs', lines 75:0-75:17 *) Definition q2_body : result i32 := Return q1. -Definition q2 : i32 := (q2_body)%global. +Definition q2 : i32 := q2_body%global. (** [constants::Q3] Source: 'src/constants.rs', lines 76:0-76:17 *) Definition q3_body : result i32 := add q2 3%i32. -Definition q3 : i32 := (q3_body)%global. +Definition q3 : i32 := q3_body%global. (** [constants::get_z2]: Source: 'src/constants.rs', lines 70:0-70:28 *) @@ -141,22 +141,22 @@ Definition get_z2 : result i32 := (** [constants::S1] Source: 'src/constants.rs', lines 80:0-80:18 *) Definition s1_body : result u32 := Return 6%u32. -Definition s1 : u32 := (s1_body)%global. +Definition s1 : u32 := s1_body%global. (** [constants::S2] Source: 'src/constants.rs', lines 81:0-81:18 *) Definition s2_body : result u32 := incr s1. -Definition s2 : u32 := (s2_body)%global. +Definition s2 : u32 := s2_body%global. (** [constants::S3] Source: 'src/constants.rs', lines 82:0-82:29 *) Definition s3_body : result (Pair_t u32 u32) := Return p3. -Definition s3 : Pair_t u32 u32 := (s3_body)%global. +Definition s3 : Pair_t u32 u32 := s3_body%global. (** [constants::S4] Source: 'src/constants.rs', lines 83:0-83:29 *) Definition s4_body : result (Pair_t u32 u32) := mk_pair1 7%u32 8%u32. -Definition s4 : Pair_t u32 u32 := (s4_body)%global. +Definition s4 : Pair_t u32 u32 := s4_body%global. (** [constants::V] Source: 'src/constants.rs', lines 86:0-86:31 *) diff --git a/tests/coq/traits/Traits.v b/tests/coq/traits/Traits.v index a9cd7e91..a861c114 100644 --- a/tests/coq/traits/Traits.v +++ b/tests/coq/traits/Traits.v @@ -283,9 +283,12 @@ Definition ToTypetraitsBoolWrapperT (T : Type) (toTypeBoolTInst : ToType_t bool (** [traits::WithConstTy::LEN2] Source: 'src/traits.rs', lines 164:4-164:21 *) -Definition with_const_ty_len2_default_body : result usize := Return 32%usize. -Definition with_const_ty_len2_default : usize := - with_const_ty_len2_default_body%global +Definition with_const_ty_len2_default_body (Self : Type) (LEN : usize) + : result usize := + Return 32%usize +. +Definition with_const_ty_len2_default (Self : Type) (LEN : usize) : usize := + (with_const_ty_len2_default_body Self LEN)%global . (** Trait declaration: [traits::WithConstTy] @@ -326,7 +329,7 @@ Definition withConstTyBool32_f Source: 'src/traits.rs', lines 174:0-174:29 *) Definition WithConstTyBool32 : WithConstTy_t bool 32%usize := {| WithConstTy_tWithConstTy_t_LEN1 := with_const_ty_bool32_len1; - WithConstTy_tWithConstTy_t_LEN2 := with_const_ty_len2_default; + WithConstTy_tWithConstTy_t_LEN2 := with_const_ty_len2_default bool 32%usize; WithConstTy_tWithConstTy_t_V := u8; WithConstTy_tWithConstTy_t_W := u64; WithConstTy_tWithConstTy_t_W_clause_0 := ToU64U64; @@ -613,4 +616,93 @@ Definition test_get_trait getTraitInst.(GetTrait_t_get_w) x . +(** Trait declaration: [traits::Trait] + Source: 'src/traits.rs', lines 310:0-310:15 *) +Record Trait_t (Self : Type) := mkTrait_t { Trait_tTrait_t_LEN : usize; }. + +Arguments mkTrait_t { _ }. +Arguments Trait_tTrait_t_LEN { _ }. + +(** [traits::{(traits::Trait for @Array<T, N>)#14}::LEN] + Source: 'src/traits.rs', lines 315:4-315:20 *) +Definition trait_array_len_body (T : Type) (N : usize) : result usize := + Return N +. +Definition trait_array_len (T : Type) (N : usize) : usize := + (trait_array_len_body T N)%global +. + +(** Trait implementation: [traits::{(traits::Trait for @Array<T, N>)#14}] + Source: 'src/traits.rs', lines 314:0-314:40 *) +Definition TraitArray (T : Type) (N : usize) : Trait_t (array T N) := {| + Trait_tTrait_t_LEN := trait_array_len T N; +|}. + +(** [traits::{(traits::Trait for traits::Wrapper<T>)#15}::LEN] + Source: 'src/traits.rs', lines 319:4-319:20 *) +Definition traittraits_wrapper_len_body (T : Type) (traitInst : Trait_t T) + : result usize := + Return 0%usize +. +Definition traittraits_wrapper_len (T : Type) (traitInst : Trait_t T) + : usize := + (traittraits_wrapper_len_body T traitInst)%global +. + +(** Trait implementation: [traits::{(traits::Trait for traits::Wrapper<T>)#15}] + Source: 'src/traits.rs', lines 318:0-318:35 *) +Definition TraittraitsWrapper (T : Type) (traitInst : Trait_t T) : Trait_t + (Wrapper_t T) := {| + Trait_tTrait_t_LEN := traittraits_wrapper_len T traitInst; +|}. + +(** [traits::use_wrapper_len]: + Source: 'src/traits.rs', lines 322:0-322:43 *) +Definition use_wrapper_len (T : Type) (traitInst : Trait_t T) : result usize := + Return (TraittraitsWrapper T traitInst).(Trait_tTrait_t_LEN) +. + +(** [traits::Foo] + Source: 'src/traits.rs', lines 326:0-326:20 *) +Record Foo_t (T U : Type) := mkFoo_t { foo_x : T; foo_y : U; }. + +Arguments mkFoo_t { _ _ }. +Arguments foo_x { _ _ }. +Arguments foo_y { _ _ }. + +(** [core::result::Result] + Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/result.rs', lines 502:0-502:21 *) +Inductive core_result_Result_t (T E : Type) := +| Core_result_Result_Ok : T -> core_result_Result_t T E +| Core_result_Result_Err : E -> core_result_Result_t T E +. + +Arguments Core_result_Result_Ok { _ _ }. +Arguments Core_result_Result_Err { _ _ }. + +(** [traits::{traits::Foo<T, U>#16}::FOO] + Source: 'src/traits.rs', lines 332:4-332:33 *) +Definition foo_foo_body (T U : Type) (traitInst : Trait_t T) + : result (core_result_Result_t T i32) := + Return (Core_result_Result_Err 0%i32) +. +Definition foo_foo (T U : Type) (traitInst : Trait_t T) + : core_result_Result_t T i32 := + (foo_foo_body T U traitInst)%global +. + +(** [traits::use_foo1]: + Source: 'src/traits.rs', lines 335:0-335:48 *) +Definition use_foo1 + (T U : Type) (traitInst : Trait_t T) : result (core_result_Result_t T i32) := + Return (foo_foo T U traitInst) +. + +(** [traits::use_foo2]: + Source: 'src/traits.rs', lines 339:0-339:48 *) +Definition use_foo2 + (T U : Type) (traitInst : Trait_t U) : result (core_result_Result_t U i32) := + Return (foo_foo U T traitInst) +. + End Traits. diff --git a/tests/fstar/misc/Constants.fst b/tests/fstar/misc/Constants.fst index 3664c7d6..8d1cf3ce 100644 --- a/tests/fstar/misc/Constants.fst +++ b/tests/fstar/misc/Constants.fst @@ -8,17 +8,17 @@ open Primitives (** [constants::X0] Source: 'src/constants.rs', lines 5:0-5:17 *) let x0_body : result u32 = Return 0 -let x0 : u32 = eval_global (x0_body) +let x0 : u32 = eval_global x0_body (** [constants::X1] Source: 'src/constants.rs', lines 7:0-7:17 *) let x1_body : result u32 = Return core_u32_max -let x1 : u32 = eval_global (x1_body) +let x1 : u32 = eval_global x1_body (** [constants::X2] Source: 'src/constants.rs', lines 10:0-10:17 *) let x2_body : result u32 = Return 3 -let x2 : u32 = eval_global (x2_body) +let x2 : u32 = eval_global x2_body (** [constants::incr]: Source: 'src/constants.rs', lines 17:0-17:32 *) @@ -28,7 +28,7 @@ let incr (n : u32) : result u32 = (** [constants::X3] Source: 'src/constants.rs', lines 15:0-15:17 *) let x3_body : result u32 = incr 32 -let x3 : u32 = eval_global (x3_body) +let x3 : u32 = eval_global x3_body (** [constants::mk_pair0]: Source: 'src/constants.rs', lines 23:0-23:51 *) @@ -47,22 +47,22 @@ let mk_pair1 (x : u32) (y1 : u32) : result (pair_t u32 u32) = (** [constants::P0] Source: 'src/constants.rs', lines 31:0-31:24 *) let p0_body : result (u32 & u32) = mk_pair0 0 1 -let p0 : (u32 & u32) = eval_global (p0_body) +let p0 : (u32 & u32) = eval_global p0_body (** [constants::P1] Source: 'src/constants.rs', lines 32:0-32:28 *) let p1_body : result (pair_t u32 u32) = mk_pair1 0 1 -let p1 : pair_t u32 u32 = eval_global (p1_body) +let p1 : pair_t u32 u32 = eval_global p1_body (** [constants::P2] Source: 'src/constants.rs', lines 33:0-33:24 *) let p2_body : result (u32 & u32) = Return (0, 1) -let p2 : (u32 & u32) = eval_global (p2_body) +let p2 : (u32 & u32) = eval_global p2_body (** [constants::P3] Source: 'src/constants.rs', lines 34:0-34:28 *) let p3_body : result (pair_t u32 u32) = Return { x = 0; y = 1 } -let p3 : pair_t u32 u32 = eval_global (p3_body) +let p3 : pair_t u32 u32 = eval_global p3_body (** [constants::Wrap] Source: 'src/constants.rs', lines 49:0-49:18 *) @@ -76,7 +76,7 @@ let wrap_new (t : Type0) (value : t) : result (wrap_t t) = (** [constants::Y] Source: 'src/constants.rs', lines 41:0-41:22 *) let y_body : result (wrap_t i32) = wrap_new i32 2 -let y : wrap_t i32 = eval_global (y_body) +let y : wrap_t i32 = eval_global y_body (** [constants::unwrap_y]: Source: 'src/constants.rs', lines 43:0-43:30 *) @@ -86,12 +86,12 @@ let unwrap_y : result i32 = (** [constants::YVAL] Source: 'src/constants.rs', lines 47:0-47:19 *) let yval_body : result i32 = unwrap_y -let yval : i32 = eval_global (yval_body) +let yval : i32 = eval_global yval_body (** [constants::get_z1::Z1] Source: 'src/constants.rs', lines 62:4-62:17 *) let get_z1_z1_body : result i32 = Return 3 -let get_z1_z1 : i32 = eval_global (get_z1_z1_body) +let get_z1_z1 : i32 = eval_global get_z1_z1_body (** [constants::get_z1]: Source: 'src/constants.rs', lines 61:0-61:28 *) @@ -106,17 +106,17 @@ let add (a : i32) (b : i32) : result i32 = (** [constants::Q1] Source: 'src/constants.rs', lines 74:0-74:17 *) let q1_body : result i32 = Return 5 -let q1 : i32 = eval_global (q1_body) +let q1 : i32 = eval_global q1_body (** [constants::Q2] Source: 'src/constants.rs', lines 75:0-75:17 *) let q2_body : result i32 = Return q1 -let q2 : i32 = eval_global (q2_body) +let q2 : i32 = eval_global q2_body (** [constants::Q3] Source: 'src/constants.rs', lines 76:0-76:17 *) let q3_body : result i32 = add q2 3 -let q3 : i32 = eval_global (q3_body) +let q3 : i32 = eval_global q3_body (** [constants::get_z2]: Source: 'src/constants.rs', lines 70:0-70:28 *) @@ -126,22 +126,22 @@ let get_z2 : result i32 = (** [constants::S1] Source: 'src/constants.rs', lines 80:0-80:18 *) let s1_body : result u32 = Return 6 -let s1 : u32 = eval_global (s1_body) +let s1 : u32 = eval_global s1_body (** [constants::S2] Source: 'src/constants.rs', lines 81:0-81:18 *) let s2_body : result u32 = incr s1 -let s2 : u32 = eval_global (s2_body) +let s2 : u32 = eval_global s2_body (** [constants::S3] Source: 'src/constants.rs', lines 82:0-82:29 *) let s3_body : result (pair_t u32 u32) = Return p3 -let s3 : pair_t u32 u32 = eval_global (s3_body) +let s3 : pair_t u32 u32 = eval_global s3_body (** [constants::S4] Source: 'src/constants.rs', lines 83:0-83:29 *) let s4_body : result (pair_t u32 u32) = mk_pair1 7 8 -let s4 : pair_t u32 u32 = eval_global (s4_body) +let s4 : pair_t u32 u32 = eval_global s4_body (** [constants::V] Source: 'src/constants.rs', lines 86:0-86:31 *) diff --git a/tests/fstar/traits/Traits.fst b/tests/fstar/traits/Traits.fst index 466fb482..fba564a5 100644 --- a/tests/fstar/traits/Traits.fst +++ b/tests/fstar/traits/Traits.fst @@ -229,9 +229,11 @@ let toTypetraitsBoolWrapperT (t : Type0) (toTypeBoolTInst : toType_t bool t) : (** [traits::WithConstTy::LEN2] Source: 'src/traits.rs', lines 164:4-164:21 *) -let with_const_ty_len2_default_body : result usize = Return 32 -let with_const_ty_len2_default : usize = - eval_global with_const_ty_len2_default_body +let with_const_ty_len2_default_body (self : Type0) (len : usize) + : result usize = + Return 32 +let with_const_ty_len2_default (self : Type0) (len : usize) : usize = + eval_global (with_const_ty_len2_default_body self len) (** Trait declaration: [traits::WithConstTy] Source: 'src/traits.rs', lines 161:0-161:39 *) @@ -259,7 +261,7 @@ let withConstTyBool32_f (i : u64) (a : array u8 32) : result u64 = Source: 'src/traits.rs', lines 174:0-174:29 *) let withConstTyBool32 : withConstTy_t bool 32 = { cLEN1 = with_const_ty_bool32_len1; - cLEN2 = with_const_ty_len2_default; + cLEN2 = with_const_ty_len2_default bool 32; tV = u8; tW = u64; tW_clause_0 = toU64U64; @@ -460,3 +462,70 @@ let test_get_trait (t : Type0) (getTraitInst : getTrait_t t) (x : t) : result getTraitInst.tW = getTraitInst.get_w x +(** Trait declaration: [traits::Trait] + Source: 'src/traits.rs', lines 310:0-310:15 *) +noeq type trait_t (self : Type0) = { cLEN : usize; } + +(** [traits::{(traits::Trait for @Array<T, N>)#14}::LEN] + Source: 'src/traits.rs', lines 315:4-315:20 *) +let trait_array_len_body (t : Type0) (n : usize) : result usize = Return n +let trait_array_len (t : Type0) (n : usize) : usize = + eval_global (trait_array_len_body t n) + +(** Trait implementation: [traits::{(traits::Trait for @Array<T, N>)#14}] + Source: 'src/traits.rs', lines 314:0-314:40 *) +let traitArray (t : Type0) (n : usize) : trait_t (array t n) = { + cLEN = trait_array_len t n; +} + +(** [traits::{(traits::Trait for traits::Wrapper<T>)#15}::LEN] + Source: 'src/traits.rs', lines 319:4-319:20 *) +let traittraits_wrapper_len_body (t : Type0) (traitInst : trait_t t) + : result usize = + Return 0 +let traittraits_wrapper_len (t : Type0) (traitInst : trait_t t) : usize = + eval_global (traittraits_wrapper_len_body t traitInst) + +(** Trait implementation: [traits::{(traits::Trait for traits::Wrapper<T>)#15}] + Source: 'src/traits.rs', lines 318:0-318:35 *) +let traittraitsWrapper (t : Type0) (traitInst : trait_t t) : trait_t (wrapper_t + t) = { + cLEN = traittraits_wrapper_len t traitInst; +} + +(** [traits::use_wrapper_len]: + Source: 'src/traits.rs', lines 322:0-322:43 *) +let use_wrapper_len (t : Type0) (traitInst : trait_t t) : result usize = + Return (traittraitsWrapper t traitInst).cLEN + +(** [traits::Foo] + Source: 'src/traits.rs', lines 326:0-326:20 *) +type foo_t (t u : Type0) = { x : t; y : u; } + +(** [core::result::Result] + Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/result.rs', lines 502:0-502:21 *) +type core_result_Result_t (t e : Type0) = +| Core_result_Result_Ok : t -> core_result_Result_t t e +| Core_result_Result_Err : e -> core_result_Result_t t e + +(** [traits::{traits::Foo<T, U>#16}::FOO] + Source: 'src/traits.rs', lines 332:4-332:33 *) +let foo_foo_body (t u : Type0) (traitInst : trait_t t) + : result (core_result_Result_t t i32) = + Return (Core_result_Result_Err 0) +let foo_foo (t u : Type0) (traitInst : trait_t t) + : core_result_Result_t t i32 = + eval_global (foo_foo_body t u traitInst) + +(** [traits::use_foo1]: + Source: 'src/traits.rs', lines 335:0-335:48 *) +let use_foo1 + (t u : Type0) (traitInst : trait_t t) : result (core_result_Result_t t i32) = + Return (foo_foo t u traitInst) + +(** [traits::use_foo2]: + Source: 'src/traits.rs', lines 339:0-339:48 *) +let use_foo2 + (t u : Type0) (traitInst : trait_t u) : result (core_result_Result_t u i32) = + Return (foo_foo u t traitInst) + diff --git a/tests/lean/Constants.lean b/tests/lean/Constants.lean index 3727e393..40f590d4 100644 --- a/tests/lean/Constants.lean +++ b/tests/lean/Constants.lean @@ -8,17 +8,17 @@ namespace constants /- [constants::X0] Source: 'src/constants.rs', lines 5:0-5:17 -/ def X0_body : Result U32 := Result.ret 0#u32 -def X0 : U32 := eval_global (X0_body) +def X0 : U32 := eval_global X0_body /- [constants::X1] Source: 'src/constants.rs', lines 7:0-7:17 -/ def X1_body : Result U32 := Result.ret core_u32_max -def X1 : U32 := eval_global (X1_body) +def X1 : U32 := eval_global X1_body /- [constants::X2] Source: 'src/constants.rs', lines 10:0-10:17 -/ def X2_body : Result U32 := Result.ret 3#u32 -def X2 : U32 := eval_global (X2_body) +def X2 : U32 := eval_global X2_body /- [constants::incr]: Source: 'src/constants.rs', lines 17:0-17:32 -/ @@ -28,7 +28,7 @@ def incr (n : U32) : Result U32 := /- [constants::X3] Source: 'src/constants.rs', lines 15:0-15:17 -/ def X3_body : Result U32 := incr 32#u32 -def X3 : U32 := eval_global (X3_body) +def X3 : U32 := eval_global X3_body /- [constants::mk_pair0]: Source: 'src/constants.rs', lines 23:0-23:51 -/ @@ -49,22 +49,22 @@ def mk_pair1 (x : U32) (y : U32) : Result (Pair U32 U32) := /- [constants::P0] Source: 'src/constants.rs', lines 31:0-31:24 -/ def P0_body : Result (U32 × U32) := mk_pair0 0#u32 1#u32 -def P0 : (U32 × U32) := eval_global (P0_body) +def P0 : (U32 × U32) := eval_global P0_body /- [constants::P1] Source: 'src/constants.rs', lines 32:0-32:28 -/ def P1_body : Result (Pair U32 U32) := mk_pair1 0#u32 1#u32 -def P1 : Pair U32 U32 := eval_global (P1_body) +def P1 : Pair U32 U32 := eval_global P1_body /- [constants::P2] Source: 'src/constants.rs', lines 33:0-33:24 -/ def P2_body : Result (U32 × U32) := Result.ret (0#u32, 1#u32) -def P2 : (U32 × U32) := eval_global (P2_body) +def P2 : (U32 × U32) := eval_global P2_body /- [constants::P3] Source: 'src/constants.rs', lines 34:0-34:28 -/ def P3_body : Result (Pair U32 U32) := Result.ret { x := 0#u32, y := 1#u32 } -def P3 : Pair U32 U32 := eval_global (P3_body) +def P3 : Pair U32 U32 := eval_global P3_body /- [constants::Wrap] Source: 'src/constants.rs', lines 49:0-49:18 -/ @@ -79,7 +79,7 @@ def Wrap.new (T : Type) (value : T) : Result (Wrap T) := /- [constants::Y] Source: 'src/constants.rs', lines 41:0-41:22 -/ def Y_body : Result (Wrap I32) := Wrap.new I32 2#i32 -def Y : Wrap I32 := eval_global (Y_body) +def Y : Wrap I32 := eval_global Y_body /- [constants::unwrap_y]: Source: 'src/constants.rs', lines 43:0-43:30 -/ @@ -89,12 +89,12 @@ def unwrap_y : Result I32 := /- [constants::YVAL] Source: 'src/constants.rs', lines 47:0-47:19 -/ def YVAL_body : Result I32 := unwrap_y -def YVAL : I32 := eval_global (YVAL_body) +def YVAL : I32 := eval_global YVAL_body /- [constants::get_z1::Z1] Source: 'src/constants.rs', lines 62:4-62:17 -/ def get_z1.Z1_body : Result I32 := Result.ret 3#i32 -def get_z1.Z1 : I32 := eval_global (get_z1.Z1_body) +def get_z1.Z1 : I32 := eval_global get_z1.Z1_body /- [constants::get_z1]: Source: 'src/constants.rs', lines 61:0-61:28 -/ @@ -109,17 +109,17 @@ def add (a : I32) (b : I32) : Result I32 := /- [constants::Q1] Source: 'src/constants.rs', lines 74:0-74:17 -/ def Q1_body : Result I32 := Result.ret 5#i32 -def Q1 : I32 := eval_global (Q1_body) +def Q1 : I32 := eval_global Q1_body /- [constants::Q2] Source: 'src/constants.rs', lines 75:0-75:17 -/ def Q2_body : Result I32 := Result.ret Q1 -def Q2 : I32 := eval_global (Q2_body) +def Q2 : I32 := eval_global Q2_body /- [constants::Q3] Source: 'src/constants.rs', lines 76:0-76:17 -/ def Q3_body : Result I32 := add Q2 3#i32 -def Q3 : I32 := eval_global (Q3_body) +def Q3 : I32 := eval_global Q3_body /- [constants::get_z2]: Source: 'src/constants.rs', lines 70:0-70:28 -/ @@ -132,22 +132,22 @@ def get_z2 : Result I32 := /- [constants::S1] Source: 'src/constants.rs', lines 80:0-80:18 -/ def S1_body : Result U32 := Result.ret 6#u32 -def S1 : U32 := eval_global (S1_body) +def S1 : U32 := eval_global S1_body /- [constants::S2] Source: 'src/constants.rs', lines 81:0-81:18 -/ def S2_body : Result U32 := incr S1 -def S2 : U32 := eval_global (S2_body) +def S2 : U32 := eval_global S2_body /- [constants::S3] Source: 'src/constants.rs', lines 82:0-82:29 -/ def S3_body : Result (Pair U32 U32) := Result.ret P3 -def S3 : Pair U32 U32 := eval_global (S3_body) +def S3 : Pair U32 U32 := eval_global S3_body /- [constants::S4] Source: 'src/constants.rs', lines 83:0-83:29 -/ def S4_body : Result (Pair U32 U32) := mk_pair1 7#u32 8#u32 -def S4 : Pair U32 U32 := eval_global (S4_body) +def S4 : Pair U32 U32 := eval_global S4_body /- [constants::V] Source: 'src/constants.rs', lines 86:0-86:31 -/ diff --git a/tests/lean/Traits.lean b/tests/lean/Traits.lean index 26dac252..acddd1a9 100644 --- a/tests/lean/Traits.lean +++ b/tests/lean/Traits.lean @@ -242,9 +242,10 @@ def ToTypetraitsBoolWrapperT (T : Type) (ToTypeBoolTInst : ToType Bool T) : /- [traits::WithConstTy::LEN2] Source: 'src/traits.rs', lines 164:4-164:21 -/ -def WithConstTy.LEN2_default_body : Result Usize := Result.ret 32#usize -def WithConstTy.LEN2_default : Usize := - eval_global WithConstTy.LEN2_default_body +def WithConstTy.LEN2_default_body (Self : Type) (LEN : Usize) : Result Usize := + Result.ret 32#usize +def WithConstTy.LEN2_default (Self : Type) (LEN : Usize) : Usize := + eval_global (WithConstTy.LEN2_default_body Self LEN) /- Trait declaration: [traits::WithConstTy] Source: 'src/traits.rs', lines 161:0-161:39 -/ @@ -270,7 +271,7 @@ def WithConstTyBool32.f (i : U64) (a : Array U8 32#usize) : Result U64 := Source: 'src/traits.rs', lines 174:0-174:29 -/ def WithConstTyBool32 : WithConstTy Bool 32#usize := { LEN1 := WithConstTyBool32.LEN1 - LEN2 := WithConstTy.LEN2_default + LEN2 := WithConstTy.LEN2_default Bool 32#usize V := U8 W := U64 W_clause_0 := ToU64U64 @@ -467,4 +468,73 @@ def test_get_trait (T : Type) (GetTraitInst : GetTrait T) (x : T) : Result GetTraitInst.W := GetTraitInst.get_w x +/- Trait declaration: [traits::Trait] + Source: 'src/traits.rs', lines 310:0-310:15 -/ +structure Trait (Self : Type) where + LEN : Usize + +/- [traits::{(traits::Trait for @Array<T, N>)#14}::LEN] + Source: 'src/traits.rs', lines 315:4-315:20 -/ +def TraitArray.LEN_body (T : Type) (N : Usize) : Result Usize := Result.ret N +def TraitArray.LEN (T : Type) (N : Usize) : Usize := + eval_global (TraitArray.LEN_body T N) + +/- Trait implementation: [traits::{(traits::Trait for @Array<T, N>)#14}] + Source: 'src/traits.rs', lines 314:0-314:40 -/ +def TraitArray (T : Type) (N : Usize) : Trait (Array T N) := { + LEN := TraitArray.LEN T N +} + +/- [traits::{(traits::Trait for traits::Wrapper<T>)#15}::LEN] + Source: 'src/traits.rs', lines 319:4-319:20 -/ +def TraittraitsWrapper.LEN_body (T : Type) (TraitInst : Trait T) + : Result Usize := + Result.ret 0#usize +def TraittraitsWrapper.LEN (T : Type) (TraitInst : Trait T) : Usize := + eval_global (TraittraitsWrapper.LEN_body T TraitInst) + +/- Trait implementation: [traits::{(traits::Trait for traits::Wrapper<T>)#15}] + Source: 'src/traits.rs', lines 318:0-318:35 -/ +def TraittraitsWrapper (T : Type) (TraitInst : Trait T) : Trait (Wrapper T) + := { + LEN := TraittraitsWrapper.LEN T TraitInst +} + +/- [traits::use_wrapper_len]: + Source: 'src/traits.rs', lines 322:0-322:43 -/ +def use_wrapper_len (T : Type) (TraitInst : Trait T) : Result Usize := + Result.ret (TraittraitsWrapper T TraitInst).LEN + +/- [traits::Foo] + Source: 'src/traits.rs', lines 326:0-326:20 -/ +structure Foo (T U : Type) where + x : T + y : U + +/- [core::result::Result] + Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/result.rs', lines 502:0-502:21 -/ +inductive core.result.Result (T E : Type) := +| Ok : T → core.result.Result T E +| Err : E → core.result.Result T E + +/- [traits::{traits::Foo<T, U>#16}::FOO] + Source: 'src/traits.rs', lines 332:4-332:33 -/ +def Foo.FOO_body (T U : Type) (TraitInst : Trait T) + : Result (core.result.Result T I32) := + Result.ret (core.result.Result.Err 0#i32) +def Foo.FOO (T U : Type) (TraitInst : Trait T) : core.result.Result T I32 := + eval_global (Foo.FOO_body T U TraitInst) + +/- [traits::use_foo1]: + Source: 'src/traits.rs', lines 335:0-335:48 -/ +def use_foo1 + (T U : Type) (TraitInst : Trait T) : Result (core.result.Result T I32) := + Result.ret (Foo.FOO T U TraitInst) + +/- [traits::use_foo2]: + Source: 'src/traits.rs', lines 339:0-339:48 -/ +def use_foo2 + (T U : Type) (TraitInst : Trait U) : Result (core.result.Result U I32) := + Result.ret (Foo.FOO U T TraitInst) + end traits |