27 lines
739 B
Text
27 lines
739 B
Text
import Lean
|
||
|
||
universe u
|
||
|
||
inductive Pred : ∀ (α : Type u), List α → Type (u+1)
|
||
| foo {α : Type u} (l1 : List α) (l2 : List (Option α)) : Pred (Option α) l2 → Pred α l1
|
||
|
||
axiom goal : forall (α : Type u) (xs : List (List α)) (h : Pred (List α) xs), xs ≠ [] → xs = xs
|
||
|
||
open Lean
|
||
open Lean.Meta
|
||
|
||
def tst1 : MetaM Unit := do
|
||
let cinfo ← getConstInfo `goal;
|
||
let type := cinfo.type;
|
||
let mvar ← mkFreshExprMVar type;
|
||
trace[Elab] (MessageData.ofGoal mvar.mvarId!);
|
||
let (_, mvarId) ← introN mvar.mvarId! 2;
|
||
let (fvarId, mvarId) ← intro1 mvarId;
|
||
trace[Elab] (MessageData.ofGoal mvarId);
|
||
let s ← generalizeIndices mvarId fvarId;
|
||
trace[Elab] (MessageData.ofGoal s.mvarId);
|
||
pure ()
|
||
|
||
set_option trace.Elab true
|
||
|
||
#eval tst1
|