20 lines
623 B
Text
20 lines
623 B
Text
import Lean
|
|
|
|
open Lean Meta
|
|
|
|
def tst : MetaM Unit := do
|
|
let (e, m) ← withLocalDeclD `x (mkConst ``Nat) fun x => do
|
|
let m ← mkFreshExprMVar (mkConst ``Nat) .syntheticOpaque
|
|
return (← mkLambdaFVars #[x] m, m)
|
|
IO.println (← ppExpr e)
|
|
lambdaTelescope e fun _ b => do
|
|
assert! (← withAssignableSyntheticOpaque <| isDefEq b (mkNatLit 0))
|
|
let m' := b.getAppFn
|
|
assert! m'.isMVar
|
|
IO.println (← getExprMVarAssignment? m'.mvarId!)
|
|
IO.println (← getExprMVarAssignment? m.mvarId!)
|
|
IO.println (← ppExpr (← instantiateMVars b))
|
|
IO.println (← ppExpr m)
|
|
return ()
|
|
|
|
#eval tst
|