creusot_contracts/logic/
real.rs1use crate::prelude::*;
3#[cfg(creusot)]
4use num_rational::BigRational;
5use std::{cmp::Ordering, marker::PhantomData};
6
7#[builtin("real.Real.real")]
8pub struct Real(PhantomData<*mut ()>);
9
10#[cfg(creusot)]
11impl DeepModel for BigRational {
12 type DeepModelTy = Real;
13
14 #[logic(opaque)]
15 fn deep_model(self) -> Self::DeepModelTy {
16 dead
17 }
18}
19
20impl Real {
21 #[logic(opaque)]
22 pub fn from_int(_: Int) -> Self {
23 dead
24 }
25}
26
27impl OrdLogic for Real {
28 #[logic(open)]
29 fn cmp_log(self, o: Self) -> Ordering {
30 if self < o {
31 Ordering::Less
32 } else if self == o {
33 Ordering::Equal
34 } else {
35 Ordering::Greater
36 }
37 }
38
39 #[logic]
40 #[builtin("real.Real.(<=)")]
41 fn le_log(self, _: Self) -> bool {
42 true
43 }
44
45 #[logic]
46 #[builtin("real.Real.(<)")]
47 fn lt_log(self, _: Self) -> bool {
48 true
49 }
50
51 #[logic]
52 #[builtin("real.Real.(>=)")]
53 fn ge_log(self, _: Self) -> bool {
54 true
55 }
56
57 #[logic]
58 #[builtin("real.Real.(>)")]
59 fn gt_log(self, _: Self) -> bool {
60 true
61 }
62
63 crate::logic::ord::ord_laws_impl! {}
64}