lean4-htt/tests/lean/withAssignableSyntheticOpaqueBug.lean
2022-07-06 15:24:17 -07:00

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