lean4-htt/tests/lean/run/simp1.lean
Leonardo de Moura 3a13200772 refactor: add configuration options to control WHNF
This commit also removes parameter `simpleReduce` from discrimination
trees, and take WHNF configuration options.
Reason: it is more dynamic now. For example, the simplifier
will be able to use different configurations for discrimination tree insertion
and retrieval. We need this feature to address issues #2669 and #2281

This commit also removes the dead Meta.Config field `zetaNonDep`.
2023-10-25 03:12:35 -07:00

53 lines
1.3 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Lean
@[simp] theorem ex1 (x : Nat) : 2 * x = x + x :=
sorry
@[simp] theorem ex2 (xs : List α) : xs ++ [] = xs :=
sorry
@[simp] theorem ex3 (xs ys zs : List α) : (xs ++ ys) ++ zs = xs ++ (ys ++ zs) :=
sorry
@[simp] theorem ex5 (p : Prop) : p True :=
sorry
@[simp] theorem ex4 (xs : List α) : ¬(x :: xs = []) :=
sorry
@[simp] theorem ex6 (p q : Prop) : p q ↔ q p:=
sorry
@[simp high] theorem ex7 [Add α] (a b : α) : a + b = b + a :=
sorry
@[simp↓] theorem ex8 [Add α] (p q : Prop) : (¬ (p ∧ q)) = (¬p ¬q) :=
sorry
axiom aux {α} (f : List α → List α) (xs ys : List α) : f (xs ++ ys) ++ [] = f (xs ++ ys)
open Lean
open Lean.Meta
def tst1 : MetaM Unit := do
let thms ← Meta.getSimpTheorems
trace[Meta.debug] "{thms.pre}\n-----\n{thms.post}"
set_option trace.Meta.debug true in
#eval tst1
def tst2 : MetaM Unit := do
let c ← getConstInfo `aux
forallTelescopeReducing c.type fun xs type => do
match type.eq? with
| none => throwError "unexpected"
| some (_, lhs, _) =>
trace[Meta.debug] "lhs: {lhs}"
let s ← Meta.getSimpTheorems
let m ← s.post.getMatch lhs {}
trace[Meta.debug] "result: {m}"
assert! m.any fun s => s.origin == .decl `ex2
set_option trace.Meta.debug true in
#eval tst2