This PR ensures that bv_decide doesn't accidentally operate on terms underneath binders. As there is currently no binder construct that is in the supported fragment of bv_decide this changes nothing about the proof power. Closes #7475
27 lines
558 B
Text
27 lines
558 B
Text
import Std.Tactic.BVDecide
|
|
|
|
inductive Sign : Type
|
|
| Positive : Sign
|
|
| Negative : Sign
|
|
deriving DecidableEq, Repr
|
|
|
|
inductive EFixedPoint : Type
|
|
| NaN : EFixedPoint
|
|
| Infinity : Sign -> EFixedPoint
|
|
deriving DecidableEq, Repr
|
|
|
|
namespace EFixedPoint
|
|
|
|
def equal (a b : EFixedPoint) : Bool :=
|
|
match a, b with
|
|
| Infinity s1, Infinity s2 => s1 = s2
|
|
| _, _ => false
|
|
|
|
/-- warning: declaration uses 'sorry' -/
|
|
#guard_msgs in
|
|
theorem EFixedPoint_eq_refl (a : EFixedPoint) : a.equal a = true := by
|
|
unfold EFixedPoint.equal
|
|
bv_normalize
|
|
sorry
|
|
|
|
end EFixedPoint
|