lean4-htt/tests/lean/run/simpCnstr1.lean
Leonardo de Moura dd3652ecdc
feat: cutsat preparations (#7097)
This PR implements several modifications for the cutsat procedure in
`grind`.
- The maximal variable is now at the beginning of linear polynomials. 
- The old `LinearArith.Solver` was deleted, and the normalizer was moved
to `Simp`.
- cutsat first files were created, and basic infrastructure for
representing divisibility constraints was added.
2025-02-16 02:52:14 +00:00

41 lines
1.4 KiB
Text

import Lean
open Lean in open Lean.Meta in
def test (declName : Name) : MetaM Unit := do
let info ← getConstInfo declName
forallTelescope info.type fun _ e => do
let some (e', p) ← Simp.Arith.simp? e none | throwError "failed to simplify{indentExpr e}"
check p
unless (← isDefEq (← inferType p) (← mkEq e e')) do
throwError "invalid proof"
IO.println s!"{← Meta.ppExpr e} ==> {← Meta.ppExpr e'}"
axiom ex1 (a b : Nat) : a + b + 1 + a < b + 4 + a
axiom ex2 (a b : Nat) : a + b + 1 + a = b + 4 + a + b
axiom ex3 (a b : Nat) : 5 = b + 4 + a + b
axiom ex4 (a b : Nat) : 4 = 1 + a
axiom ex5 (a b : Nat) : 4 + ((a + a) + b) + (a + a) + (b + b) ≤ 3 + (4*a + b) + b + 8 + 1
axiom ex6 (a b : Nat) : 4 = 8 + a
axiom ex7 (a b : Nat) : a + a ≤ 8 + a + a + b
axiom ex8 (a b c d : Nat) : b + a + c + d ≤ a + b + a + b
axiom ex9 (a b : Nat) : a + b + 1 + a > b + 4 + a
axiom ex10 (a b : Nat) : a + b + 1 + a ≥ b + 4 + a
axiom ex11 (a b : Nat) : ¬ (a + b + 1 + a < b + 4 + a)
axiom ex12 (a b : Nat) : ¬ (a + b + 1 + a > b + 4 + a)
axiom ex13 (a b : Nat) : ¬ (a + b + 1 + a ≤ b + 4 + a)
axiom ex14 (a b c d : Nat) : ¬ (a + d + b + 1 + a + d ≥ b + 4 + a + c)
#eval test ``ex1
#eval test ``ex2
#eval test ``ex3
#eval test ``ex4
#eval test ``ex5
#eval test ``ex6
#eval test ``ex7
#eval test ``ex8
#eval test ``ex9
#eval test ``ex10
#eval test ``ex11
#eval test ``ex12
#eval test ``ex13
#eval test ``ex14