Skip to content

Commit

Permalink
chore: add smtlib names in docstrings
Browse files Browse the repository at this point in the history
  • Loading branch information
luisacicolini committed Jan 13, 2025
1 parent 8e26dee commit 8c64c87
Showing 1 changed file with 20 additions and 5 deletions.
25 changes: 20 additions & 5 deletions src/Init/Data/BitVec/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -669,23 +669,38 @@ def ofBoolListLE : (bs : List Bool) → BitVec bs.length
| [] => 0#0
| b :: bs => concat (ofBoolListLE bs) b

/-- Overflow predicate for 2's complement unary minus -/
/-- Overflow predicate for 2's complement unary minus.
SMT-Lib name: `bvnego`.
-/

def not_overflow {w : Nat} (x : BitVec w) : Bool := x.toInt == - (2 ^ (w - 1))

/-- Overflow predicate for unsigned addition modulo 2^m -/
/-- Overflow predicate for unsigned addition modulo 2^m.
SMT-Lib name: `bvuaddo`.
-/

def uadd_overflow {w : Nat} (x y : BitVec w) : Bool := x.toNat + y.toNat ≥ 2 ^ w

/-- Overflow predicate for signed addition on m-bit 2's complement -/
/-- Overflow predicate for signed addition on m-bit 2's complement.
SMT-Lib name: `bvsaddo`.
-/

def sadd_overflow {w : Nat} (x y : BitVec w) : Bool := (x.toInt + y.toInt ≥ 2 ^ (w - 1)) || (x.toInt + y.toInt < - 2 ^ (w - 1))

/-- Overflow predicate for unsigned multiplication modulo 2^m -/
/-- Overflow predicate for unsigned multiplication modulo 2^m.
SMT-Lib name: `bvumulo`.
-/

def umul_overflow {w : Nat} (x y : BitVec w) : Bool := x.toNat * y.toNat ≥ 2 ^ w

/-- Overflow predicate for signed multiplication on m-bit 2's complement -/
/-- Overflow predicate for signed multiplication on m-bit 2's complement.
SMT-Lib name: `bvsmulo`.
-/

def smul_overflow {w : Nat} (x y : BitVec w) : Bool := (x.toInt * y.toInt ≥ 2 ^ (w - 1)) || (x.toInt * y.toInt < - 2 ^ (w - 1))

Expand Down

0 comments on commit 8c64c87

Please sign in to comment.