60 lines
1.9 KiB
Text
60 lines
1.9 KiB
Text
/-
|
|
Copyright (c) 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Leonardo de Moura
|
|
-/
|
|
prelude
|
|
import Lean.Meta.Basic
|
|
|
|
namespace Lean.Meta
|
|
/-!
|
|
Functions for testing whether expressions are canonical `Int` instances.
|
|
-/
|
|
|
|
def isInstOfNatInt (e : Expr) : MetaM Bool := do
|
|
let_expr instOfNat _ ← e | return false
|
|
return true
|
|
def isInstNegInt (e : Expr) : MetaM Bool := do
|
|
let_expr Int.instNegInt ← e | return false
|
|
return true
|
|
def isInstAddInt (e : Expr) : MetaM Bool := do
|
|
let_expr Int.instAdd ← e | return false
|
|
return true
|
|
def isInstSubInt (e : Expr) : MetaM Bool := do
|
|
let_expr Int.instSub ← e | return false
|
|
return true
|
|
def isInstMulInt (e : Expr) : MetaM Bool := do
|
|
let_expr Int.instMul ← e | return false
|
|
return true
|
|
def isInstDivInt (e : Expr) : MetaM Bool := do
|
|
let_expr Int.instDiv ← e | return false
|
|
return true
|
|
def isInstModInt (e : Expr) : MetaM Bool := do
|
|
let_expr Int.instMod ← e | return false
|
|
return true
|
|
def isInstDvdInt (e : Expr) : MetaM Bool := do
|
|
let_expr Int.instDvd ← e | return false
|
|
return true
|
|
def isInstHAddInt (e : Expr) : MetaM Bool := do
|
|
let_expr instHAdd _ i ← e | return false
|
|
isInstAddInt i
|
|
def isInstHSubInt (e : Expr) : MetaM Bool := do
|
|
let_expr instHSub _ i ← e | return false
|
|
isInstSubInt i
|
|
def isInstHMulInt (e : Expr) : MetaM Bool := do
|
|
let_expr instHMul _ i ← e | return false
|
|
isInstMulInt i
|
|
def isInstHDivInt (e : Expr) : MetaM Bool := do
|
|
let_expr instHDiv _ i ← e | return false
|
|
isInstDivInt i
|
|
def isInstHModInt (e : Expr) : MetaM Bool := do
|
|
let_expr instHMod _ i ← e | return false
|
|
isInstModInt i
|
|
def isInstLTInt (e : Expr) : MetaM Bool := do
|
|
let_expr Int.instLTInt ← e | return false
|
|
return true
|
|
def isInstLEInt (e : Expr) : MetaM Bool := do
|
|
let_expr Int.instLEInt ← e | return false
|
|
return true
|
|
|
|
end Lean.Meta
|