chore: update stage0

This commit is contained in:
Leonardo de Moura 2020-02-23 10:46:06 -08:00
parent 346378b3a3
commit e0fba69abc
29 changed files with 14205 additions and 1045 deletions

View file

@ -309,8 +309,10 @@ structure ParametricAttribute (α : Type) :=
(ext : PersistentEnvExtension (Name × α) (Name × α) (NameMap α))
def registerParametricAttribute {α : Type} [Inhabited α] (name : Name) (descr : String)
(getParam : Environment → Name → Syntax → Except String α)
(afterSet : Environment → Name → α → Except String Environment := fun env _ _ => Except.ok env) : IO (ParametricAttribute α) := do
(getParam : Environment → Name → Syntax → Except String α)
(afterSet : Environment → Name → α → Except String Environment := fun env _ _ => Except.ok env)
(appTime := AttributeApplicationTime.afterTypeChecking)
: IO (ParametricAttribute α) := do
ext : PersistentEnvExtension (Name × α) (Name × α) (NameMap α) ← registerPersistentEnvExtension {
name := name,
mkInitial := pure {},
@ -324,6 +326,7 @@ ext : PersistentEnvExtension (Name × α) (Name × α) (NameMap α) ← register
let attrImpl : AttributeImpl := {
name := name,
descr := descr,
applicationTime := appTime,
add := fun env decl args persistent => do
unless persistent $ throw (IO.userError ("invalid attribute '" ++ toString name ++ "', must be persistent"));
unless (env.getModuleIdxFor? decl).isNone $

View file

@ -213,4 +213,8 @@ constant instantiateTypeLevelParams (c : @& ConstantInfo) (ls : @& List Level) :
constant instantiateValueLevelParams (c : @& ConstantInfo) (ls : @& List Level) : Expr := arbitrary _
end ConstantInfo
def mkRecFor (declName : Name) : Name :=
mkNameStr declName "rec"
end Lean

View file

@ -8,3 +8,4 @@ import Init.Lean.Elab.Term
import Init.Lean.Elab.Tactic.Basic
import Init.Lean.Elab.Tactic.ElabTerm
import Init.Lean.Elab.Tactic.Induction
import Init.Lean.Elab.Tactic.Generalize

View file

@ -76,6 +76,10 @@ def isExprMVarAssigned (mvarId : MVarId) : TacticM Bool := liftTermElabM $ Term.
def assignExprMVar (mvarId : MVarId) (val : Expr) : TacticM Unit := liftTermElabM $ Term.assignExprMVar mvarId val
def ensureHasType (ref : Syntax) (expectedType? : Option Expr) (e : Expr) : TacticM Expr := liftTermElabM $ Term.ensureHasType ref expectedType? e
def reportUnsolvedGoals (ref : Syntax) (goals : List MVarId) : TacticM Unit := liftTermElabM $ Term.reportUnsolvedGoals ref goals
def inferType (ref : Syntax) (e : Expr) : TacticM Expr := liftTermElabM $ Term.inferType ref e
def whnf (ref : Syntax) (e : Expr) : TacticM Expr := liftTermElabM $ Term.whnf ref e
def whnfCore (ref : Syntax) (e : Expr) : TacticM Expr := liftTermElabM $ Term.whnfCore ref e
def unfoldDefinition? (ref : Syntax) (e : Expr) : TacticM (Option Expr) := liftTermElabM $ Term.unfoldDefinition? ref e
/-- Collect unassigned metavariables -/
def collectMVars (ref : Syntax) (e : Expr) : TacticM (List MVarId) := do
@ -257,11 +261,23 @@ def ensureHasNoMVars (ref : Syntax) (e : Expr) : TacticM Unit := do
e ← instantiateMVars ref e;
when e.hasMVar $ throwError ref ("tactic failed, resulting expression contains metavariables" ++ indentExpr e)
@[inline] def liftMetaTactic (ref : Syntax) (tactic : MVarId → MetaM (List MVarId)) : TacticM Unit := do
def withMainMVarContext {α} (ref : Syntax) (x : TacticM α) : TacticM α := do
(mvarId, _) ← getMainGoal ref;
withMVarContext mvarId x
@[inline] def liftMetaMAtMain {α} (ref : Syntax) (x : MVarId → MetaM α) : TacticM α := do
(g, _) ← getMainGoal ref;
withMVarContext g $ liftMetaM ref $ x g
@[inline] def liftMetaTacticAux {α} (ref : Syntax) (tactic : MVarId → MetaM (α × List MVarId)) : TacticM α := do
(g, gs) ← getMainGoal ref;
withMVarContext g $ do
gs' ← liftMetaM ref $ tactic g;
setGoals (gs' ++ gs)
(a, gs') ← liftMetaM ref $ tactic g;
setGoals (gs' ++ gs);
pure a
@[inline] def liftMetaTactic (ref : Syntax) (tactic : MVarId → MetaM (List MVarId)) : TacticM Unit :=
liftMetaTacticAux ref (fun mvarId => do gs ← tactic mvarId; pure ((), gs))
def done (ref : Syntax) : TacticM Unit := do
gs ← getUnsolvedGoals;
@ -347,17 +363,21 @@ fun stx => match_syntax stx with
pure [mvarId]
| _ => throwUnsupportedSyntax
def getFVarId (id : Syntax) : TacticM FVarId := do
fvar? ← liftTermElabM $ Term.isLocalTermId? id true;
match fvar? with
| some fvar => pure fvar.fvarId!
| none => throwError id ("unknown variable '" ++ toString id.getId ++ "'")
def getFVarIds (ids : Array Syntax) : TacticM (Array FVarId) :=
ids.mapM getFVarId
@[builtinTactic «revert»] def evalRevert : Tactic :=
fun stx => match_syntax stx with
| `(tactic| revert $hs*) => do
(g, gs) ← getMainGoal stx;
withMVarContext g $ do
fvarIds ← hs.mapM $ fun h => do {
fvar? ← liftTermElabM $ Term.isLocalTermId? h true;
match fvar? with
| some fvar => pure fvar.fvarId!
| none => throwError h ("unknown variable '" ++ toString h.getId ++ "'")
};
fvarIds ← getFVarIds hs;
(_, g) ← liftMetaM stx $ Meta.revert g fvarIds;
setGoals (g :: gs)
| _ => throwUnsupportedSyntax
@ -366,12 +386,9 @@ def forEachVar (ref : Syntax) (hs : Array Syntax) (tac : MVarId → FVarId → M
hs.forM $ fun h => do
(g, gs) ← getMainGoal ref;
withMVarContext g $ do
fvar? ← liftTermElabM $ Term.isLocalTermId? h true;
match fvar? with
| none => throwError h ("unknown variable '" ++ toString h.getId ++ "'")
| some fvar => do
g ← liftMetaM ref $ tac g fvar.fvarId!;
setGoals (g :: gs)
fvarId ← getFVarId h;
g ← liftMetaM ref $ tac g fvarId;
setGoals (g :: gs)
@[builtinTactic «clear»] def evalClear : Tactic :=
fun stx => match_syntax stx with

View file

@ -0,0 +1,77 @@
/-
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura, Sebastian Ullrich
-/
prelude
import Init.Lean.Meta.Tactic.Generalize
import Init.Lean.Meta.Check
import Init.Lean.Meta.Tactic.Intro
import Init.Lean.Elab.Tactic.ElabTerm
namespace Lean
namespace Elab
namespace Tactic
private def getAuxHypothesisName (stx : Syntax) : Option Name :=
if (stx.getArg 1).isNone then none
else some ((stx.getArg 1).getIdAt 0)
private def getVarName (stx : Syntax) : Name :=
stx.getIdAt 4
private def evalGeneralizeFinalize (mvarId : MVarId) (e : Expr) (target : Expr) : MetaM (List MVarId) := do
tag ← Meta.getMVarTag mvarId;
eType ← Meta.inferType e;
u ← Meta.getLevel eType;
mvar' ← Meta.mkFreshExprSyntheticOpaqueMVar target tag;
let rfl := mkApp2 (Lean.mkConst `Eq.refl [u]) eType e;
let val := mkApp2 mvar' e rfl;
Meta.assignExprMVar mvarId val;
let mvarId' := mvar'.mvarId!;
(_, mvarId') ← Meta.introN mvarId' 2 [] false;
pure [mvarId']
private def evalGeneralizeWithEq (ref : Syntax) (h : Name) (e : Expr) (x : Name) : TacticM Unit :=
liftMetaTactic ref $ fun mvarId => do
mvarId ← Meta.generalize mvarId e x;
mvarDecl ← Meta.getMVarDecl mvarId;
match mvarDecl.type with
| Expr.forallE _ _ b _ => do
(_, mvarId) ← Meta.intro1 mvarId false;
eType ← Meta.inferType e;
u ← Meta.getLevel eType;
let eq := mkApp3 (Lean.mkConst `Eq [u]) eType e (mkBVar 0);
let target := Lean.mkForall x BinderInfo.default eType $ Lean.mkForall h BinderInfo.default eq (b.liftLooseBVars 0 1);
evalGeneralizeFinalize mvarId e target
| _ => throw $ Meta.Exception.other "unexpected type after generalize"
-- If generalizing fails, fall back to not replacing anything
private def evalGeneralizeFallback (ref : Syntax) (h : Name) (e : Expr) (x : Name) : TacticM Unit :=
liftMetaTactic ref $ fun mvarId => do
eType ← Meta.inferType e;
u ← Meta.getLevel eType;
mvarType ← Meta.getMVarType mvarId;
let eq := mkApp3 (Lean.mkConst `Eq [u]) eType e (mkBVar 0);
let target := Lean.mkForall x BinderInfo.default eType $ Lean.mkForall h BinderInfo.default eq mvarType;
evalGeneralizeFinalize mvarId e target
def evalGeneralizeAux (ref : Syntax) (h? : Option Name) (e : Expr) (x : Name) : TacticM Unit :=
match h? with
| none => liftMetaTactic ref $ fun mvarId => do
mvarId ← Meta.generalize mvarId e x;
(_, mvarId) ← Meta.intro1 mvarId false;
pure [mvarId]
| some h =>
evalGeneralizeWithEq ref h e x <|> evalGeneralizeFallback ref h e x
@[builtinTactic «generalize»] def evalGeneralize : Tactic :=
fun stx => do
let h? := getAuxHypothesisName stx;
let x := getVarName stx;
e ← elabTerm (stx.getArg 2) none;
evalGeneralizeAux stx h? e x
end Tactic
end Elab
end Lean

View file

@ -4,15 +4,194 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura, Sebastian Ullrich
-/
prelude
import Init.Lean.Elab.Tactic.Basic
import Init.Lean.Meta.RecursorInfo
import Init.Lean.Elab.Tactic.ElabTerm
import Init.Lean.Elab.Tactic.Generalize
namespace Lean
namespace Elab
namespace Tactic
-- Recall that
-- majorPremise := parser! optional (try (ident >> " : ")) >> termParser
private def getAuxHypothesisName (stx : Syntax) : Option Name :=
if ((stx.getArg 1).getArg 0).isNone then none
else some (((stx.getArg 1).getArg 0).getIdAt 0)
private def getMajor (stx : Syntax) : Syntax :=
(stx.getArg 1).getArg 1
private def elabMajor (ref : Syntax) (h? : Option Name) (major : Syntax) : TacticM Expr := do
match h? with
| none => withMainMVarContext ref $ elabTerm major none
| some h => withMainMVarContext ref $ do
lctx ← getLCtx;
let x := lctx.getUnusedName `x;
major ← elabTerm major none;
evalGeneralizeAux ref h? major x;
withMainMVarContext ref $ do
lctx ← getLCtx;
match lctx.findFromUserName? x with
| some decl => pure decl.toExpr
| none => throwError ref "failed to generalize"
private def generalizeMajor (ref : Syntax) (major : Expr) : TacticM Expr := do
match major with
| Expr.fvar _ _ => pure major
| _ => do
liftMetaTacticAux ref $ fun mvarId => do
mvarId ← Meta.generalize mvarId major `x;
(fvarId, mvarId) ← Meta.intro1 mvarId;
pure (mkFVar fvarId, [mvarId])
/-
Recall that
```
generalizingVars := optional (" generalizing " >> many1 ident)
«induction» := parser! nonReservedSymbol "induction " >> majorPremise >> usingRec >> generalizingVars >> withAlts
```
`stx` is syntax for `induction`. -/
private def getGeneralizingFVarIds (stx : Syntax) : TacticM (Array FVarId) :=
let generalizingStx := stx.getArg 3;
if generalizingStx.isNone then pure #[]
else withMainMVarContext stx $ do
trace `Elab.induction stx $ fun _ => generalizingStx;
let vars := (generalizingStx.getArg 1).getArgs;
getFVarIds vars
-- process `generalizingVars` subterm of induction Syntax `stx`.
private def generalizeVars (stx : Syntax) (major : Expr) : TacticM Nat := do
fvarIds ← getGeneralizingFVarIds stx;
liftMetaTacticAux stx $ fun mvarId => do
(fvarIds, mvarId') ← Meta.revert mvarId fvarIds;
when (fvarIds.contains major.fvarId!) $
Meta.throwTacticEx `induction mvarId "major premise depends on variable being generalized";
pure (fvarIds.size, [mvarId'])
private def getAlts (withAlts : Syntax) : Array Syntax :=
(withAlts.getArg 2).getArgs.getSepElems
/-
Given an `inductionAlt` of the form
```
nodeWithAntiquot "inductionAlt" `Lean.Parser.Tactic.inductionAlt $ ident' >> many ident' >> darrow >> termParser
``` -/
private def getAltName (alt : Syntax) : Name := (alt.getArg 0).getId.eraseMacroScopes
private def getAltVarNames (alt : Syntax) : Array Name := (alt.getArg 1).getArgs.map Syntax.getId
private def getAltRHS (alt : Syntax) : Syntax := alt.getArg 3
/-
Given alts of the form
```
nodeWithAntiquot "inductionAlt" `Lean.Parser.Tactic.inductionAlt $ ident' >> many ident' >> darrow >> termParser
```
esnure the first `ident'` is `_` or a constructor name.
-/
private def checkAltCtorNames (alts : Array Syntax) (ctorNames : List Name) : TacticM Unit :=
alts.forM $ fun alt => do
let n := getAltName alt;
trace `Elab.checkAlt alt $ fun _ => n ++ ", " ++ alt;
unless (n == `_ || ctorNames.any (fun ctorName => n.isSuffixOf ctorName)) $
throwError (alt.getArg 0) ("invalid constructor name '" ++ toString n ++ "'")
structure RecInfo :=
(recName : Name)
(altVars : Array (List Name) := #[]) -- new variable names for each minor premise
(altRHSs : Array Syntax := #[]) -- RHS for each minor premise
def getInductiveValFromMajor (ref : Syntax) (major : Expr) : TacticM InductiveVal :=
liftMetaMAtMain ref $ fun mvarId => do
majorType ← Meta.inferType major;
majorType ← Meta.whnf majorType;
match majorType.getAppFn with
| Expr.const n _ _ => do
env ← Meta.getEnv;
match env.find? n with
| ConstantInfo.inductInfo val => pure val
| _ => Meta.throwTacticEx `induction mvarId ("major premise type is not an inductive type " ++ indentExpr majorType)
| _ => Meta.throwTacticEx `induction mvarId ("major premise type is not an inductive type " ++ indentExpr majorType)
private partial def getRecFromUsingLoop (ref : Syntax) (baseRecName : Name) : Expr → TacticM (Option Meta.RecursorInfo)
| majorType => do
let continue (majorType : Expr) : TacticM (Option Meta.RecursorInfo) := do {
majorType? ← unfoldDefinition? ref majorType;
match majorType? with
| some majorType => withIncRecDepth ref $ getRecFromUsingLoop majorType
| none => pure none
};
majorType ← whnfCore ref majorType;
match majorType.getAppFn with
| Expr.const name _ _ => do
let candidate := name ++ baseRecName;
env ← getEnv;
match env.find? candidate with
| some _ =>
catch
(liftMetaMAtMain ref $ fun _ => do info ← Meta.mkRecursorInfo candidate; pure (some info))
(fun _ => continue majorType)
| none => continue majorType
| _ => continue majorType
def getRecFromUsing (ref : Syntax) (major : Expr) (baseRecName : Name) : TacticM Name := do
throw $ arbitrary _
/-
Recall that
```
inductionAlt : Parser := nodeWithAntiquot "inductionAlt" `Lean.Parser.Tactic.inductionAlt $ ident' >> many ident' >> darrow >> termParser
inductionAlts : Parser := withPosition $ fun pos => "|" >> sepBy1 inductionAlt (checkColGe pos.column "alternatives must be indented" >> "|")
withAlts : Parser := optional (" with " >> inductionAlts)
usingRec : Parser := optional (" using " >> ident)
``` -/
private def getRecInfo (stx : Syntax) (major : Expr) : TacticM RecInfo :=
let ref := stx;
let usingRecStx := stx.getArg 2;
let withAlts := stx.getArg 4;
if usingRecStx.isNone then do
indVal ← getInductiveValFromMajor ref major;
let recName := mkRecFor indVal.name;
if withAlts.isNone then pure { recName := recName }
else do
let ctorNames := indVal.ctors;
let alts := getAlts withAlts;
checkAltCtorNames alts ctorNames;
(altVars, altRHSs, remainingAlts, _) ← ctorNames.foldlM
(fun (result : Array (List Name) × Array Syntax × Array Syntax × Option Syntax) (ctorName : Name) => do
let (altVars, altRHSs, remainingAlts, prevAnonymousAlt?) := result;
match remainingAlts.findIdx? (fun alt => (getAltName alt).isSuffixOf ctorName) with
| some idx =>
let newAlt := remainingAlts.get! idx;
pure (altVars.push (getAltVarNames newAlt).toList, altRHSs.push (getAltRHS newAlt), remainingAlts.eraseIdx idx, prevAnonymousAlt?)
| none => match remainingAlts.findIdx? (fun alt => getAltName alt == `_) with
| some idx =>
let newAlt := remainingAlts.get! idx;
pure (altVars.push (getAltVarNames newAlt).toList, altRHSs.push (getAltRHS newAlt), remainingAlts.eraseIdx idx, some newAlt)
| none => match prevAnonymousAlt? with
| some alt =>
pure (altVars.push (getAltVarNames alt).toList, altRHSs.push (getAltRHS alt), remainingAlts, prevAnonymousAlt?)
| none => throwError ref ("alternative for constructor '" ++ toString ctorName ++ "' is missing"))
(#[], #[], alts, none);
unless remainingAlts.isEmpty $
throwError (remainingAlts.get! 0) "unused alternative";
pure { recName := recName, altVars := altVars, altRHSs := altRHSs }
else do
let baseRecName := (usingRecStx.getIdAt 1).eraseMacroScopes;
let recName := getRecFromUsing ref major baseRecName;
-- TODO
throw $ arbitrary _
@[builtinTactic «induction»] def evalInduction : Tactic :=
fun stx => focus stx $
throwError stx ("WIP " ++ stx)
fun stx => focus stx $ do
let h? := getAuxHypothesisName stx;
major ← elabMajor stx h? (getMajor stx);
major ← generalizeMajor stx major;
n ← generalizeVars stx major;
recInfo ← getRecInfo stx major;
goals ← getGoals;
throwError stx ("WIP " ++ stx ++ major ++ ", n : " ++ toString n ++ Format.line ++ goalsToMessageData goals ++
Format.line ++ toString recInfo.altVars ++ Format.line ++ toString recInfo.altRHSs)
end Tactic
end Elab

View file

@ -805,6 +805,11 @@ finally x (modify $ fun s => { mctx := mctx', .. s })
@[init] private def regTraceClasses : IO Unit :=
registerTraceClass `Meta
def run {α} (env : Environment) (x : MetaM α) (maxRecDepth := 10000) : Except Exception α :=
match x { maxRecDepth := maxRecDepth, currRecDepth := 0 } { env := env } with
| EStateM.Result.ok a _ => Except.ok a
| EStateM.Result.error ex _ => Except.error ex
end Meta
end Lean

View file

@ -8,6 +8,7 @@ import Init.Data.Nat.Control
import Init.Lean.AuxRecursor
import Init.Lean.Util.FindExpr
import Init.Lean.Meta.ExprDefEq
import Init.Lean.Meta.Message
namespace Lean
namespace Meta
@ -106,7 +107,7 @@ else do
if s != "recOn" && s != "casesOn" && s != "brecOn" then
pure none
else do
recInfo ← getConstInfo (mkNameStr p "rec");
recInfo ← getConstInfo (mkRecFor p);
match recInfo with
| ConstantInfo.recInfo val => pure (some (val.nparams + val.nindices + (if s == "casesOn" then 1 else val.nmotives)))
| _ => throw $ Exception.other "unexpected recursor information"
@ -264,11 +265,43 @@ forallTelescopeReducing cinfo.type $ fun xs type => type.withApp $ fun motive mo
("invalid user defined recursor '" ++ toString declName
++ "', type of the major premise must be of the form (I ...), where I is a constant")
def mkRecursorInfo (declName : Name) (majorPos? : Option Nat := none) : MetaM RecursorInfo := do
private def syntaxToMajorPos (stx : Syntax) : Except String Nat :=
match stx with
| Syntax.node _ args =>
if args.size == 0 then Except.error "unexpected kind of argument"
else match (args.get! 0).isNatLit? with
| some idx =>
if idx == 0 then Except.error "major premise position must be greater than 0"
else pure (idx - 1)
| none => Except.error "unexpected kind of argument"
| _ => Except.error "unexpected kind of argument"
private def mkRecursorInfoCore (declName : Name) (majorPos? : Option Nat := none) : MetaM RecursorInfo := do
cinfo ← getConstInfo declName;
match cinfo with
| ConstantInfo.recInfo val => mkRecursorInfoForKernelRec declName val
| _ => mkRecursorInfoAux cinfo majorPos?
def mkRecursorAttr : IO (ParametricAttribute Nat) :=
registerParametricAttribute `recursor "user defined recursor, numerical parameter specifies position of the major premise"
(fun _ _ => syntaxToMajorPos)
(fun env declName majorPos =>
match Meta.run env (mkRecursorInfoCore declName (some majorPos)) with
| Except.ok _ => pure env
| Except.error ex => Except.error $ toString ex)
@[init mkRecursorAttr] constant recursorAttribute : ParametricAttribute Nat := arbitrary _
def getMajorPos? (env : Environment) (declName : Name) : Option Nat :=
recursorAttribute.getParam env declName
def mkRecursorInfo (declName : Name) (majorPos? : Option Nat := none) : MetaM RecursorInfo := do
cinfo ← getConstInfo declName;
match cinfo with
| ConstantInfo.recInfo val => mkRecursorInfoForKernelRec declName val
| _ => match majorPos? with
| none => do env ← getEnv; mkRecursorInfoAux cinfo (getMajorPos? env declName)
| _ => mkRecursorInfoAux cinfo majorPos?
end Meta
end Lean

View file

@ -38,7 +38,7 @@ def ident' : Parser := ident <|> underscore
@[builtinTacticParser] def «traceState» := parser! nonReservedSymbol "traceState"
@[builtinTacticParser] def «generalize» := parser! nonReservedSymbol "generalize" >> optional (try (ident >> " : ")) >> termParser 50 >> " = " >> ident
def majorPremise := parser! optional (try (ident >> " : ")) >> termParser
def inductionAlt : Parser := nodeWithAntiquot "inductionAlt" `Lean.Parser.Tactic.inductionAlt $ ident >> many ident >> darrow >> termParser
def inductionAlt : Parser := nodeWithAntiquot "inductionAlt" `Lean.Parser.Tactic.inductionAlt $ ident' >> many ident' >> darrow >> termParser
def inductionAlts : Parser := withPosition $ fun pos => "|" >> sepBy1 inductionAlt (checkColGe pos.column "alternatives must be indented" >> "|")
def withAlts : Parser := optional (" with " >> inductionAlts)
def usingRec : Parser := optional (" using " >> ident)

File diff suppressed because one or more lines are too long

View file

@ -193,6 +193,7 @@ lean_object* l_Lean_mkAttributeExtension___lambda__2(lean_object*);
lean_object* l_Lean_attributeExtension___closed__4;
lean_object* l_Array_iterateMAux___main___at___private_Init_Lean_Attributes_2__AttributeExtension_addImported___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Array_binSearchAux___main___at_Lean_ParametricAttribute_getParam___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_IO_Error_Inhabited___closed__1;
lean_object* l_Lean_attrParamSyntaxToIdentifier(lean_object*);
lean_object* l_Lean_registerParametricAttribute___rarg___closed__1;
@ -325,7 +326,7 @@ lean_object* lean_io_initializing(lean_object*);
extern lean_object* l_Lean_registerPersistentEnvExtensionUnsafe___rarg___closed__2;
lean_object* l_Lean_mkAttributeImplOfConstantUnsafe___closed__2;
lean_object* l_Lean_registerTagAttribute(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*);
uint8_t l_HashMapImp_contains___at_Lean_registerAttributeImplBuilder___spec__1(lean_object*, lean_object*);
lean_object* l_Lean_EnumAttributes_setValue___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Data_Array_QSort_1__partitionAux___main___at_Lean_registerEnumAttributes___spec__4___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@ -7938,48 +7939,47 @@ x_1 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lam
return x_1;
}
}
lean_object* l_Lean_registerParametricAttribute___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
lean_object* l_Lean_registerParametricAttribute___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, uint8_t x_6, lean_object* x_7) {
_start:
{
lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_7 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__2___boxed), 2, 1);
lean_closure_set(x_7, 0, x_1);
x_8 = l_Lean_registerTagAttribute___closed__1;
x_9 = l_Lean_registerTagAttribute___closed__2;
x_10 = l_Lean_registerParametricAttribute___rarg___closed__1;
x_11 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14;
x_8 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__2___boxed), 2, 1);
lean_closure_set(x_8, 0, x_1);
x_9 = l_Lean_registerTagAttribute___closed__1;
x_10 = l_Lean_registerTagAttribute___closed__2;
x_11 = l_Lean_registerParametricAttribute___rarg___closed__1;
x_12 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_inc(x_2);
x_12 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_12, 0, x_2);
lean_ctor_set(x_12, 1, x_8);
lean_ctor_set(x_12, 2, x_9);
lean_ctor_set(x_12, 3, x_10);
lean_ctor_set(x_12, 4, x_7);
lean_ctor_set(x_12, 5, x_11);
x_13 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_registerParametricAttribute___spec__7___rarg(x_12, x_6);
if (lean_obj_tag(x_13) == 0)
x_13 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_13, 0, x_2);
lean_ctor_set(x_13, 1, x_9);
lean_ctor_set(x_13, 2, x_10);
lean_ctor_set(x_13, 3, x_11);
lean_ctor_set(x_13, 4, x_8);
lean_ctor_set(x_13, 5, x_12);
x_14 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_registerParametricAttribute___spec__7___rarg(x_13, x_7);
if (lean_obj_tag(x_14) == 0)
{
lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; lean_object* x_18; lean_object* x_19;
x_14 = lean_ctor_get(x_13, 0);
lean_inc(x_14);
x_15 = lean_ctor_get(x_13, 1);
lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19;
x_15 = lean_ctor_get(x_14, 0);
lean_inc(x_15);
x_16 = lean_ctor_get(x_14, 1);
lean_inc(x_16);
lean_dec(x_14);
lean_inc(x_15);
lean_dec(x_13);
lean_inc(x_14);
lean_inc(x_2);
x_16 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_16, 0, x_2);
lean_closure_set(x_16, 1, x_4);
lean_closure_set(x_16, 2, x_14);
lean_closure_set(x_16, 3, x_5);
x_17 = 0;
x_17 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_17, 0, x_2);
lean_closure_set(x_17, 1, x_4);
lean_closure_set(x_17, 2, x_15);
lean_closure_set(x_17, 3, x_5);
x_18 = lean_alloc_ctor(0, 3, 1);
lean_ctor_set(x_18, 0, x_2);
lean_ctor_set(x_18, 1, x_3);
lean_ctor_set(x_18, 2, x_16);
lean_ctor_set_uint8(x_18, sizeof(void*)*3, x_17);
lean_ctor_set(x_18, 2, x_17);
lean_ctor_set_uint8(x_18, sizeof(void*)*3, x_6);
lean_inc(x_18);
x_19 = l_Lean_registerBuiltinAttribute(x_18, x_15);
x_19 = l_Lean_registerBuiltinAttribute(x_18, x_16);
if (lean_obj_tag(x_19) == 0)
{
uint8_t x_20;
@ -7991,7 +7991,7 @@ x_21 = lean_ctor_get(x_19, 0);
lean_dec(x_21);
x_22 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_22, 0, x_18);
lean_ctor_set(x_22, 1, x_14);
lean_ctor_set(x_22, 1, x_15);
lean_ctor_set(x_19, 0, x_22);
return x_19;
}
@ -8003,7 +8003,7 @@ lean_inc(x_23);
lean_dec(x_19);
x_24 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_24, 0, x_18);
lean_ctor_set(x_24, 1, x_14);
lean_ctor_set(x_24, 1, x_15);
x_25 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_25, 0, x_24);
lean_ctor_set(x_25, 1, x_23);
@ -8014,7 +8014,7 @@ else
{
uint8_t x_26;
lean_dec(x_18);
lean_dec(x_14);
lean_dec(x_15);
x_26 = !lean_is_exclusive(x_19);
if (x_26 == 0)
{
@ -8042,19 +8042,19 @@ lean_dec(x_5);
lean_dec(x_4);
lean_dec(x_3);
lean_dec(x_2);
x_30 = !lean_is_exclusive(x_13);
x_30 = !lean_is_exclusive(x_14);
if (x_30 == 0)
{
return x_13;
return x_14;
}
else
{
lean_object* x_31; lean_object* x_32; lean_object* x_33;
x_31 = lean_ctor_get(x_13, 0);
x_32 = lean_ctor_get(x_13, 1);
x_31 = lean_ctor_get(x_14, 0);
x_32 = lean_ctor_get(x_14, 1);
lean_inc(x_32);
lean_inc(x_31);
lean_dec(x_13);
lean_dec(x_14);
x_33 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_33, 0, x_31);
lean_ctor_set(x_33, 1, x_32);
@ -8067,7 +8067,7 @@ lean_object* l_Lean_registerParametricAttribute(lean_object* x_1) {
_start:
{
lean_object* x_2;
x_2 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg), 6, 0);
x_2 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___boxed), 7, 0);
return x_2;
}
}
@ -8170,6 +8170,16 @@ x_11 = l_Lean_registerParametricAttribute___rarg___lambda__4(x_1, x_2, x_3, x_4,
return x_11;
}
}
lean_object* l_Lean_registerParametricAttribute___rarg___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
_start:
{
uint8_t x_8; lean_object* x_9;
x_8 = lean_unbox(x_6);
lean_dec(x_6);
x_9 = l_Lean_registerParametricAttribute___rarg(x_1, x_2, x_3, x_4, x_5, x_8, x_7);
return x_9;
}
}
lean_object* _init_l_Lean_ParametricAttribute_Inhabited___closed__1() {
_start:
{

View file

@ -40,6 +40,7 @@ lean_object* l_Lean_mkExportAttr___closed__2;
lean_object* lean_array_push(lean_object*, lean_object*);
lean_object* lean_array_get_size(lean_object*);
lean_object* lean_string_append(lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Array_binSearchAux___main___at_Lean_getExportNameFor___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Name_inhabited;
extern lean_object* l_String_splitAux___main___closed__1;
@ -112,7 +113,7 @@ lean_object* l_unsafeCast(lean_object*, lean_object*, lean_object*, lean_object*
uint8_t l_String_anyAux___main___at___private_Init_Lean_Compiler_ExportAttr_1__isValidCppId___spec__2(uint8_t, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_mkExportAttr___closed__5;
lean_object* l_Lean_Name_toStringWithSep___main(lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*);
lean_object* l_String_anyAux___main___at___private_Init_Lean_Compiler_ExportAttr_1__isValidCppId___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Data_Array_QSort_1__partitionAux___main___at_Lean_mkExportAttr___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_mkExportAttr___closed__3;
@ -1494,47 +1495,46 @@ x_1 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___at_Lean_mk
return x_1;
}
}
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6) {
_start:
{
lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12;
x_6 = l_Lean_registerTagAttribute___closed__1;
x_7 = l_Lean_registerTagAttribute___closed__2;
x_8 = l_Lean_registerParametricAttribute___rarg___closed__1;
x_9 = l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1___closed__1;
x_10 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_7 = l_Lean_registerTagAttribute___closed__1;
x_8 = l_Lean_registerTagAttribute___closed__2;
x_9 = l_Lean_registerParametricAttribute___rarg___closed__1;
x_10 = l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1___closed__1;
x_11 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_inc(x_1);
x_11 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_11, 0, x_1);
lean_ctor_set(x_11, 1, x_6);
lean_ctor_set(x_11, 2, x_7);
lean_ctor_set(x_11, 3, x_8);
lean_ctor_set(x_11, 4, x_9);
lean_ctor_set(x_11, 5, x_10);
x_12 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_mkExportAttr___spec__5(x_11, x_5);
if (lean_obj_tag(x_12) == 0)
x_12 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_12, 0, x_1);
lean_ctor_set(x_12, 1, x_7);
lean_ctor_set(x_12, 2, x_8);
lean_ctor_set(x_12, 3, x_9);
lean_ctor_set(x_12, 4, x_10);
lean_ctor_set(x_12, 5, x_11);
x_13 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_mkExportAttr___spec__5(x_12, x_6);
if (lean_obj_tag(x_13) == 0)
{
lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18;
x_13 = lean_ctor_get(x_12, 0);
lean_inc(x_13);
x_14 = lean_ctor_get(x_12, 1);
lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18;
x_14 = lean_ctor_get(x_13, 0);
lean_inc(x_14);
x_15 = lean_ctor_get(x_13, 1);
lean_inc(x_15);
lean_dec(x_13);
lean_inc(x_14);
lean_dec(x_12);
lean_inc(x_13);
lean_inc(x_1);
x_15 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_15, 0, x_1);
lean_closure_set(x_15, 1, x_3);
lean_closure_set(x_15, 2, x_13);
lean_closure_set(x_15, 3, x_4);
x_16 = 0;
x_16 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_16, 0, x_1);
lean_closure_set(x_16, 1, x_3);
lean_closure_set(x_16, 2, x_14);
lean_closure_set(x_16, 3, x_4);
x_17 = lean_alloc_ctor(0, 3, 1);
lean_ctor_set(x_17, 0, x_1);
lean_ctor_set(x_17, 1, x_2);
lean_ctor_set(x_17, 2, x_15);
lean_ctor_set_uint8(x_17, sizeof(void*)*3, x_16);
lean_ctor_set(x_17, 2, x_16);
lean_ctor_set_uint8(x_17, sizeof(void*)*3, x_5);
lean_inc(x_17);
x_18 = l_Lean_registerBuiltinAttribute(x_17, x_14);
x_18 = l_Lean_registerBuiltinAttribute(x_17, x_15);
if (lean_obj_tag(x_18) == 0)
{
uint8_t x_19;
@ -1546,7 +1546,7 @@ x_20 = lean_ctor_get(x_18, 0);
lean_dec(x_20);
x_21 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_21, 0, x_17);
lean_ctor_set(x_21, 1, x_13);
lean_ctor_set(x_21, 1, x_14);
lean_ctor_set(x_18, 0, x_21);
return x_18;
}
@ -1558,7 +1558,7 @@ lean_inc(x_22);
lean_dec(x_18);
x_23 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_23, 0, x_17);
lean_ctor_set(x_23, 1, x_13);
lean_ctor_set(x_23, 1, x_14);
x_24 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_24, 0, x_23);
lean_ctor_set(x_24, 1, x_22);
@ -1569,7 +1569,7 @@ else
{
uint8_t x_25;
lean_dec(x_17);
lean_dec(x_13);
lean_dec(x_14);
x_25 = !lean_is_exclusive(x_18);
if (x_25 == 0)
{
@ -1597,19 +1597,19 @@ lean_dec(x_4);
lean_dec(x_3);
lean_dec(x_2);
lean_dec(x_1);
x_29 = !lean_is_exclusive(x_12);
x_29 = !lean_is_exclusive(x_13);
if (x_29 == 0)
{
return x_12;
return x_13;
}
else
{
lean_object* x_30; lean_object* x_31; lean_object* x_32;
x_30 = lean_ctor_get(x_12, 0);
x_31 = lean_ctor_get(x_12, 1);
x_30 = lean_ctor_get(x_13, 0);
x_31 = lean_ctor_get(x_13, 1);
lean_inc(x_31);
lean_inc(x_30);
lean_dec(x_12);
lean_dec(x_13);
x_32 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_32, 0, x_30);
lean_ctor_set(x_32, 1, x_31);
@ -1743,13 +1743,14 @@ return x_1;
lean_object* l_Lean_mkExportAttr(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; uint8_t x_6; lean_object* x_7;
x_2 = l_Lean_mkExportAttr___closed__2;
x_3 = l_Lean_mkExportAttr___closed__3;
x_4 = l_Lean_mkExportAttr___closed__4;
x_5 = l_Lean_mkExportAttr___closed__5;
x_6 = l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1(x_2, x_3, x_4, x_5, x_1);
return x_6;
x_6 = 0;
x_7 = l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1(x_2, x_3, x_4, x_5, x_6, x_1);
return x_7;
}
}
lean_object* l_RBNode_fold___main___at_Lean_mkExportAttr___spec__2___boxed(lean_object* x_1, lean_object* x_2) {
@ -1802,6 +1803,16 @@ lean_dec(x_1);
return x_2;
}
}
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
_start:
{
uint8_t x_7; lean_object* x_8;
x_7 = lean_unbox(x_5);
lean_dec(x_5);
x_8 = l_Lean_registerParametricAttribute___at_Lean_mkExportAttr___spec__1(x_1, x_2, x_3, x_4, x_7, x_6);
return x_8;
}
}
lean_object* l_Lean_mkExportAttr___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{

View file

@ -147,11 +147,12 @@ lean_object* l_Lean_getExternEntryForAux___main(lean_object*, lean_object*);
extern lean_object* l_System_FilePath_dirName___closed__1;
lean_object* l_unsafeCast(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Name_toStringWithSep___main(lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Compiler_ExternAttr_1__syntaxToExternEntries___main___closed__3;
lean_object* l___private_Init_Lean_Compiler_ExternAttr_1__syntaxToExternEntries___boxed(lean_object*, lean_object*, lean_object*);
uint8_t l_UInt32_decLe(uint32_t, uint32_t);
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1___closed__1;
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*);
lean_object* l_Lean_mkSimpleFnCall(lean_object*, lean_object*);
lean_object* l_Lean_getExternEntryFor___boxed(lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Compiler_ExternAttr_1__syntaxToExternEntries___main___closed__5;
@ -1778,47 +1779,46 @@ x_1 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___at_Lean_mk
return x_1;
}
}
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6) {
_start:
{
lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12;
x_6 = l_Lean_registerTagAttribute___closed__1;
x_7 = l_Lean_registerTagAttribute___closed__2;
x_8 = l_Lean_mkProjectionFnInfoExtension___closed__3;
x_9 = l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1___closed__1;
x_10 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_7 = l_Lean_registerTagAttribute___closed__1;
x_8 = l_Lean_registerTagAttribute___closed__2;
x_9 = l_Lean_mkProjectionFnInfoExtension___closed__3;
x_10 = l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1___closed__1;
x_11 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_inc(x_1);
x_11 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_11, 0, x_1);
lean_ctor_set(x_11, 1, x_6);
lean_ctor_set(x_11, 2, x_7);
lean_ctor_set(x_11, 3, x_8);
lean_ctor_set(x_11, 4, x_9);
lean_ctor_set(x_11, 5, x_10);
x_12 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_mkExternAttr___spec__5(x_11, x_5);
if (lean_obj_tag(x_12) == 0)
x_12 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_12, 0, x_1);
lean_ctor_set(x_12, 1, x_7);
lean_ctor_set(x_12, 2, x_8);
lean_ctor_set(x_12, 3, x_9);
lean_ctor_set(x_12, 4, x_10);
lean_ctor_set(x_12, 5, x_11);
x_13 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_mkExternAttr___spec__5(x_12, x_6);
if (lean_obj_tag(x_13) == 0)
{
lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18;
x_13 = lean_ctor_get(x_12, 0);
lean_inc(x_13);
x_14 = lean_ctor_get(x_12, 1);
lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18;
x_14 = lean_ctor_get(x_13, 0);
lean_inc(x_14);
x_15 = lean_ctor_get(x_13, 1);
lean_inc(x_15);
lean_dec(x_13);
lean_inc(x_14);
lean_dec(x_12);
lean_inc(x_13);
lean_inc(x_1);
x_15 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_15, 0, x_1);
lean_closure_set(x_15, 1, x_3);
lean_closure_set(x_15, 2, x_13);
lean_closure_set(x_15, 3, x_4);
x_16 = 0;
x_16 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_16, 0, x_1);
lean_closure_set(x_16, 1, x_3);
lean_closure_set(x_16, 2, x_14);
lean_closure_set(x_16, 3, x_4);
x_17 = lean_alloc_ctor(0, 3, 1);
lean_ctor_set(x_17, 0, x_1);
lean_ctor_set(x_17, 1, x_2);
lean_ctor_set(x_17, 2, x_15);
lean_ctor_set_uint8(x_17, sizeof(void*)*3, x_16);
lean_ctor_set(x_17, 2, x_16);
lean_ctor_set_uint8(x_17, sizeof(void*)*3, x_5);
lean_inc(x_17);
x_18 = l_Lean_registerBuiltinAttribute(x_17, x_14);
x_18 = l_Lean_registerBuiltinAttribute(x_17, x_15);
if (lean_obj_tag(x_18) == 0)
{
uint8_t x_19;
@ -1830,7 +1830,7 @@ x_20 = lean_ctor_get(x_18, 0);
lean_dec(x_20);
x_21 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_21, 0, x_17);
lean_ctor_set(x_21, 1, x_13);
lean_ctor_set(x_21, 1, x_14);
lean_ctor_set(x_18, 0, x_21);
return x_18;
}
@ -1842,7 +1842,7 @@ lean_inc(x_22);
lean_dec(x_18);
x_23 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_23, 0, x_17);
lean_ctor_set(x_23, 1, x_13);
lean_ctor_set(x_23, 1, x_14);
x_24 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_24, 0, x_23);
lean_ctor_set(x_24, 1, x_22);
@ -1853,7 +1853,7 @@ else
{
uint8_t x_25;
lean_dec(x_17);
lean_dec(x_13);
lean_dec(x_14);
x_25 = !lean_is_exclusive(x_18);
if (x_25 == 0)
{
@ -1881,19 +1881,19 @@ lean_dec(x_4);
lean_dec(x_3);
lean_dec(x_2);
lean_dec(x_1);
x_29 = !lean_is_exclusive(x_12);
x_29 = !lean_is_exclusive(x_13);
if (x_29 == 0)
{
return x_12;
return x_13;
}
else
{
lean_object* x_30; lean_object* x_31; lean_object* x_32;
x_30 = lean_ctor_get(x_12, 0);
x_31 = lean_ctor_get(x_12, 1);
x_30 = lean_ctor_get(x_13, 0);
x_31 = lean_ctor_get(x_13, 1);
lean_inc(x_31);
lean_inc(x_30);
lean_dec(x_12);
lean_dec(x_13);
x_32 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_32, 0, x_30);
lean_ctor_set(x_32, 1, x_31);
@ -1990,13 +1990,14 @@ return x_1;
lean_object* l_Lean_mkExternAttr(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; uint8_t x_6; lean_object* x_7;
x_2 = l_Lean_mkExternAttr___closed__2;
x_3 = l_Lean_mkExternAttr___closed__3;
x_4 = l_Lean_mkExternAttr___closed__4;
x_5 = l_Lean_mkExternAttr___closed__5;
x_6 = l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1(x_2, x_3, x_4, x_5, x_1);
return x_6;
x_6 = 0;
x_7 = l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1(x_2, x_3, x_4, x_5, x_6, x_1);
return x_7;
}
}
lean_object* l_RBNode_fold___main___at_Lean_mkExternAttr___spec__2___boxed(lean_object* x_1, lean_object* x_2) {
@ -2049,6 +2050,16 @@ lean_dec(x_1);
return x_2;
}
}
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
_start:
{
uint8_t x_7; lean_object* x_8;
x_7 = lean_unbox(x_5);
lean_dec(x_5);
x_8 = l_Lean_registerParametricAttribute___at_Lean_mkExternAttr___spec__1(x_1, x_2, x_3, x_4, x_7, x_6);
return x_8;
}
}
lean_object* l_Lean_mkExternAttr___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{

View file

@ -18,6 +18,7 @@ extern lean_object* l___private_Init_Lean_Environment_8__persistentEnvExtensions
lean_object* l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1___closed__1;
lean_object* lean_nat_div(lean_object*, lean_object*);
lean_object* l_Lean_PersistentEnvExtension_getModuleEntries___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Compiler_mkImplementedByAttr___lambda__1___closed__1;
lean_object* l_Lean_Compiler_mkImplementedByAttr___lambda__1___boxed(lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_registerEnvExtensionUnsafe___at_Lean_registerTagAttribute___spec__4___closed__1;
@ -41,7 +42,7 @@ lean_object* lean_nat_add(lean_object*, lean_object*);
extern lean_object* l_Lean_registerTagAttribute___closed__2;
lean_object* l_Array_binSearchAux___main___at_Lean_Compiler_getImplementedBy___spec__3(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_registerEnvExtensionUnsafe___at_Lean_Compiler_mkImplementedByAttr___spec__7(lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*);
lean_object* lean_array_fget(lean_object*, lean_object*);
lean_object* l_Lean_Compiler_mkImplementedByAttr___lambda__2(lean_object*, lean_object*, lean_object*);
uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
@ -1116,47 +1117,46 @@ x_1 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___at_Lean_Co
return x_1;
}
}
lean_object* l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
lean_object* l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6) {
_start:
{
lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12;
x_6 = l_Lean_registerTagAttribute___closed__1;
x_7 = l_Lean_registerTagAttribute___closed__2;
x_8 = l_Lean_registerParametricAttribute___rarg___closed__1;
x_9 = l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1___closed__1;
x_10 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_7 = l_Lean_registerTagAttribute___closed__1;
x_8 = l_Lean_registerTagAttribute___closed__2;
x_9 = l_Lean_registerParametricAttribute___rarg___closed__1;
x_10 = l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1___closed__1;
x_11 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_inc(x_1);
x_11 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_11, 0, x_1);
lean_ctor_set(x_11, 1, x_6);
lean_ctor_set(x_11, 2, x_7);
lean_ctor_set(x_11, 3, x_8);
lean_ctor_set(x_11, 4, x_9);
lean_ctor_set(x_11, 5, x_10);
x_12 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_Compiler_mkImplementedByAttr___spec__5(x_11, x_5);
if (lean_obj_tag(x_12) == 0)
x_12 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_12, 0, x_1);
lean_ctor_set(x_12, 1, x_7);
lean_ctor_set(x_12, 2, x_8);
lean_ctor_set(x_12, 3, x_9);
lean_ctor_set(x_12, 4, x_10);
lean_ctor_set(x_12, 5, x_11);
x_13 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_Compiler_mkImplementedByAttr___spec__5(x_12, x_6);
if (lean_obj_tag(x_13) == 0)
{
lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18;
x_13 = lean_ctor_get(x_12, 0);
lean_inc(x_13);
x_14 = lean_ctor_get(x_12, 1);
lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18;
x_14 = lean_ctor_get(x_13, 0);
lean_inc(x_14);
x_15 = lean_ctor_get(x_13, 1);
lean_inc(x_15);
lean_dec(x_13);
lean_inc(x_14);
lean_dec(x_12);
lean_inc(x_13);
lean_inc(x_1);
x_15 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_15, 0, x_1);
lean_closure_set(x_15, 1, x_3);
lean_closure_set(x_15, 2, x_13);
lean_closure_set(x_15, 3, x_4);
x_16 = 0;
x_16 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_16, 0, x_1);
lean_closure_set(x_16, 1, x_3);
lean_closure_set(x_16, 2, x_14);
lean_closure_set(x_16, 3, x_4);
x_17 = lean_alloc_ctor(0, 3, 1);
lean_ctor_set(x_17, 0, x_1);
lean_ctor_set(x_17, 1, x_2);
lean_ctor_set(x_17, 2, x_15);
lean_ctor_set_uint8(x_17, sizeof(void*)*3, x_16);
lean_ctor_set(x_17, 2, x_16);
lean_ctor_set_uint8(x_17, sizeof(void*)*3, x_5);
lean_inc(x_17);
x_18 = l_Lean_registerBuiltinAttribute(x_17, x_14);
x_18 = l_Lean_registerBuiltinAttribute(x_17, x_15);
if (lean_obj_tag(x_18) == 0)
{
uint8_t x_19;
@ -1168,7 +1168,7 @@ x_20 = lean_ctor_get(x_18, 0);
lean_dec(x_20);
x_21 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_21, 0, x_17);
lean_ctor_set(x_21, 1, x_13);
lean_ctor_set(x_21, 1, x_14);
lean_ctor_set(x_18, 0, x_21);
return x_18;
}
@ -1180,7 +1180,7 @@ lean_inc(x_22);
lean_dec(x_18);
x_23 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_23, 0, x_17);
lean_ctor_set(x_23, 1, x_13);
lean_ctor_set(x_23, 1, x_14);
x_24 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_24, 0, x_23);
lean_ctor_set(x_24, 1, x_22);
@ -1191,7 +1191,7 @@ else
{
uint8_t x_25;
lean_dec(x_17);
lean_dec(x_13);
lean_dec(x_14);
x_25 = !lean_is_exclusive(x_18);
if (x_25 == 0)
{
@ -1219,19 +1219,19 @@ lean_dec(x_4);
lean_dec(x_3);
lean_dec(x_2);
lean_dec(x_1);
x_29 = !lean_is_exclusive(x_12);
x_29 = !lean_is_exclusive(x_13);
if (x_29 == 0)
{
return x_12;
return x_13;
}
else
{
lean_object* x_30; lean_object* x_31; lean_object* x_32;
x_30 = lean_ctor_get(x_12, 0);
x_31 = lean_ctor_get(x_12, 1);
x_30 = lean_ctor_get(x_13, 0);
x_31 = lean_ctor_get(x_13, 1);
lean_inc(x_31);
lean_inc(x_30);
lean_dec(x_12);
lean_dec(x_13);
x_32 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_32, 0, x_30);
lean_ctor_set(x_32, 1, x_31);
@ -1444,13 +1444,14 @@ return x_1;
lean_object* l_Lean_Compiler_mkImplementedByAttr(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; uint8_t x_6; lean_object* x_7;
x_2 = l_Lean_Compiler_mkImplementedByAttr___closed__2;
x_3 = l_Lean_Compiler_mkImplementedByAttr___closed__3;
x_4 = l_Lean_Compiler_mkImplementedByAttr___closed__4;
x_5 = l_Lean_Compiler_mkImplementedByAttr___closed__5;
x_6 = l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1(x_2, x_3, x_4, x_5, x_1);
return x_6;
x_6 = 0;
x_7 = l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1(x_2, x_3, x_4, x_5, x_6, x_1);
return x_7;
}
}
lean_object* l_RBNode_fold___main___at_Lean_Compiler_mkImplementedByAttr___spec__2___boxed(lean_object* x_1, lean_object* x_2) {
@ -1503,6 +1504,16 @@ lean_dec(x_1);
return x_2;
}
}
lean_object* l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
_start:
{
uint8_t x_7; lean_object* x_8;
x_7 = lean_unbox(x_5);
lean_dec(x_5);
x_8 = l_Lean_registerParametricAttribute___at_Lean_Compiler_mkImplementedByAttr___spec__1(x_1, x_2, x_3, x_4, x_7, x_6);
return x_8;
}
}
lean_object* l_Lean_Compiler_mkImplementedByAttr___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{

View file

@ -20,6 +20,7 @@ lean_object* l___private_Init_Lean_Compiler_InitAttr_2__isUnitType___closed__1;
extern lean_object* l___private_Init_Lean_Environment_8__persistentEnvExtensionsRef;
lean_object* l___private_Init_Lean_Compiler_InitAttr_2__isUnitType___boxed(lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1___closed__1;
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* lean_nat_div(lean_object*, lean_object*);
lean_object* l_Lean_PersistentEnvExtension_getModuleEntries___rarg(lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_registerEnvExtensionUnsafe___at_Lean_registerTagAttribute___spec__4___closed__1;
@ -93,7 +94,7 @@ lean_object* l_Lean_mkInitAttr___closed__3;
uint8_t l_Lean_isIOUnitInitFn(lean_object*, lean_object*);
lean_object* lean_io_ref_reset(lean_object*, lean_object*);
extern lean_object* l_Lean_registerEnvExtensionUnsafe___rarg___closed__2;
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*);
lean_object* l_Lean_Environment_getModuleIdxFor_x3f(lean_object*, lean_object*);
lean_object* lean_io_ref_set(lean_object*, lean_object*, lean_object*);
lean_object* lean_get_init_fn_name_for(lean_object*, lean_object*);
@ -1321,47 +1322,46 @@ x_1 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___at_Lean_mk
return x_1;
}
}
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6) {
_start:
{
lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12;
x_6 = l_Lean_registerTagAttribute___closed__1;
x_7 = l_Lean_registerTagAttribute___closed__2;
x_8 = l_Lean_registerParametricAttribute___rarg___closed__1;
x_9 = l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1___closed__1;
x_10 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_7 = l_Lean_registerTagAttribute___closed__1;
x_8 = l_Lean_registerTagAttribute___closed__2;
x_9 = l_Lean_registerParametricAttribute___rarg___closed__1;
x_10 = l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1___closed__1;
x_11 = l_Lean_registerParametricAttribute___rarg___closed__2;
lean_inc(x_1);
x_11 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_11, 0, x_1);
lean_ctor_set(x_11, 1, x_6);
lean_ctor_set(x_11, 2, x_7);
lean_ctor_set(x_11, 3, x_8);
lean_ctor_set(x_11, 4, x_9);
lean_ctor_set(x_11, 5, x_10);
x_12 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_mkInitAttr___spec__5(x_11, x_5);
if (lean_obj_tag(x_12) == 0)
x_12 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_12, 0, x_1);
lean_ctor_set(x_12, 1, x_7);
lean_ctor_set(x_12, 2, x_8);
lean_ctor_set(x_12, 3, x_9);
lean_ctor_set(x_12, 4, x_10);
lean_ctor_set(x_12, 5, x_11);
x_13 = l_Lean_registerPersistentEnvExtensionUnsafe___at_Lean_mkInitAttr___spec__5(x_12, x_6);
if (lean_obj_tag(x_13) == 0)
{
lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18;
x_13 = lean_ctor_get(x_12, 0);
lean_inc(x_13);
x_14 = lean_ctor_get(x_12, 1);
lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18;
x_14 = lean_ctor_get(x_13, 0);
lean_inc(x_14);
x_15 = lean_ctor_get(x_13, 1);
lean_inc(x_15);
lean_dec(x_13);
lean_inc(x_14);
lean_dec(x_12);
lean_inc(x_13);
lean_inc(x_1);
x_15 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_15, 0, x_1);
lean_closure_set(x_15, 1, x_3);
lean_closure_set(x_15, 2, x_13);
lean_closure_set(x_15, 3, x_4);
x_16 = 0;
x_16 = lean_alloc_closure((void*)(l_Lean_registerParametricAttribute___rarg___lambda__4___boxed), 9, 4);
lean_closure_set(x_16, 0, x_1);
lean_closure_set(x_16, 1, x_3);
lean_closure_set(x_16, 2, x_14);
lean_closure_set(x_16, 3, x_4);
x_17 = lean_alloc_ctor(0, 3, 1);
lean_ctor_set(x_17, 0, x_1);
lean_ctor_set(x_17, 1, x_2);
lean_ctor_set(x_17, 2, x_15);
lean_ctor_set_uint8(x_17, sizeof(void*)*3, x_16);
lean_ctor_set(x_17, 2, x_16);
lean_ctor_set_uint8(x_17, sizeof(void*)*3, x_5);
lean_inc(x_17);
x_18 = l_Lean_registerBuiltinAttribute(x_17, x_14);
x_18 = l_Lean_registerBuiltinAttribute(x_17, x_15);
if (lean_obj_tag(x_18) == 0)
{
uint8_t x_19;
@ -1373,7 +1373,7 @@ x_20 = lean_ctor_get(x_18, 0);
lean_dec(x_20);
x_21 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_21, 0, x_17);
lean_ctor_set(x_21, 1, x_13);
lean_ctor_set(x_21, 1, x_14);
lean_ctor_set(x_18, 0, x_21);
return x_18;
}
@ -1385,7 +1385,7 @@ lean_inc(x_22);
lean_dec(x_18);
x_23 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_23, 0, x_17);
lean_ctor_set(x_23, 1, x_13);
lean_ctor_set(x_23, 1, x_14);
x_24 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_24, 0, x_23);
lean_ctor_set(x_24, 1, x_22);
@ -1396,7 +1396,7 @@ else
{
uint8_t x_25;
lean_dec(x_17);
lean_dec(x_13);
lean_dec(x_14);
x_25 = !lean_is_exclusive(x_18);
if (x_25 == 0)
{
@ -1424,19 +1424,19 @@ lean_dec(x_4);
lean_dec(x_3);
lean_dec(x_2);
lean_dec(x_1);
x_29 = !lean_is_exclusive(x_12);
x_29 = !lean_is_exclusive(x_13);
if (x_29 == 0)
{
return x_12;
return x_13;
}
else
{
lean_object* x_30; lean_object* x_31; lean_object* x_32;
x_30 = lean_ctor_get(x_12, 0);
x_31 = lean_ctor_get(x_12, 1);
x_30 = lean_ctor_get(x_13, 0);
x_31 = lean_ctor_get(x_13, 1);
lean_inc(x_31);
lean_inc(x_30);
lean_dec(x_12);
lean_dec(x_13);
x_32 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_32, 0, x_30);
lean_ctor_set(x_32, 1, x_31);
@ -1732,13 +1732,14 @@ return x_1;
lean_object* l_Lean_mkInitAttr(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; uint8_t x_6; lean_object* x_7;
x_2 = l_Lean_mkInitAttr___closed__2;
x_3 = l_Lean_mkInitAttr___closed__3;
x_4 = l_Lean_mkInitAttr___closed__4;
x_5 = l_Lean_mkInitAttr___closed__5;
x_6 = l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1(x_2, x_3, x_4, x_5, x_1);
return x_6;
x_6 = 0;
x_7 = l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1(x_2, x_3, x_4, x_5, x_6, x_1);
return x_7;
}
}
lean_object* l_RBNode_fold___main___at_Lean_mkInitAttr___spec__2___boxed(lean_object* x_1, lean_object* x_2) {
@ -1791,6 +1792,16 @@ lean_dec(x_1);
return x_2;
}
}
lean_object* l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
_start:
{
uint8_t x_7; lean_object* x_8;
x_7 = lean_unbox(x_5);
lean_dec(x_5);
x_8 = l_Lean_registerParametricAttribute___at_Lean_mkInitAttr___spec__1(x_1, x_2, x_3, x_4, x_7, x_6);
return x_8;
}
}
lean_object* l_Lean_mkInitAttr___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{

View file

@ -36,7 +36,9 @@ lean_object* l_Lean_ConstantInfo_hasValue___boxed(lean_object*);
lean_object* l_Lean_ConstantInfo_name(lean_object*);
lean_object* l_Lean_ConstantVal_inhabited;
lean_object* l_Lean_ConstantInfo_toConstantVal___boxed(lean_object*);
lean_object* lean_name_mk_string(lean_object*, lean_object*);
uint8_t l_Lean_ConstantInfo_hasValue(lean_object*);
lean_object* l_Lean_mkRecFor___closed__1;
lean_object* l_Lean_RecursorVal_getInduct___boxed(lean_object*);
lean_object* l_Lean_ReducibilityHints_Inhabited;
lean_object* l_Lean_ConstantInfo_isCtor___boxed(lean_object*);
@ -59,6 +61,7 @@ lean_object* l_Lean_ConstantInfo_value_x21___closed__3;
lean_object* l_Lean_ConstantInfo_value_x21(lean_object*);
lean_object* l_Lean_ConstantInfo_hints___boxed(lean_object*);
lean_object* lean_task_get(lean_object*);
lean_object* l_Lean_mkRecFor(lean_object*);
lean_object* l_Lean_ConstantInfo_type___boxed(lean_object*);
uint8_t l_Lean_ReducibilityHints_lt(lean_object*, lean_object*);
lean_object* _init_l_Lean_ReducibilityHints_Inhabited() {
@ -555,6 +558,23 @@ lean_dec(x_1);
return x_3;
}
}
lean_object* _init_l_Lean_mkRecFor___closed__1() {
_start:
{
lean_object* x_1;
x_1 = lean_mk_string("rec");
return x_1;
}
}
lean_object* l_Lean_mkRecFor(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3;
x_2 = l_Lean_mkRecFor___closed__1;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
lean_object* initialize_Init_Lean_Expr(lean_object*);
static bool _G_initialized = false;
lean_object* initialize_Init_Lean_Declaration(lean_object* w) {
@ -582,6 +602,8 @@ l_Lean_ConstantInfo_value_x21___closed__2 = _init_l_Lean_ConstantInfo_value_x21_
lean_mark_persistent(l_Lean_ConstantInfo_value_x21___closed__2);
l_Lean_ConstantInfo_value_x21___closed__3 = _init_l_Lean_ConstantInfo_value_x21___closed__3();
lean_mark_persistent(l_Lean_ConstantInfo_value_x21___closed__3);
l_Lean_mkRecFor___closed__1 = _init_l_Lean_mkRecFor___closed__1();
lean_mark_persistent(l_Lean_mkRecFor___closed__1);
return lean_mk_io_result(lean_box(0));
}
#ifdef __cplusplus

View file

@ -201,6 +201,7 @@ lean_object* l___private_Init_Lean_Elab_Command_10__toCommandResult___rarg___clo
lean_object* l_Lean_Elab_Command_elabSynth(lean_object*, lean_object*, lean_object*);
lean_object* l_Array_iterateMAux___main___at_Lean_Elab_Command_elabUniverses___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_List_foldl___main___at_Lean_Elab_Command_elabExport___spec__2(lean_object*, lean_object*);
extern lean_object* l_Lean_Meta_run___rarg___closed__5;
lean_object* l___regBuiltinCommandElab_Lean_Elab_Command_elabInitQuot___closed__2;
extern lean_object* l_Lean_Meta_dbgTrace___rarg___closed__1;
lean_object* l_Lean_Elab_Command_setOption___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@ -376,7 +377,6 @@ lean_object* l___regBuiltinCommandElab_Lean_Elab_Command_elabEnd(lean_object*);
lean_object* l_Lean_Elab_Command_throwAlreadyDeclaredUniverseLevel___rarg___closed__1;
extern lean_object* l_Lean_Elab_Term_elabTermAux___main___closed__3;
lean_object* l___private_Init_Lean_Elab_Command_13__addNamespace___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_IO_runMeta___rarg___closed__4;
extern lean_object* l_Lean_PersistentEnvExtension_inhabited___rarg___closed__3;
lean_object* l_Lean_Elab_Command_withMacroExpansion(lean_object*);
lean_object* l_Lean_Elab_Command_withDeclId___closed__3;
@ -8010,7 +8010,7 @@ x_2 = lean_ctor_get(x_1, 0);
x_3 = lean_ctor_get(x_1, 1);
x_4 = lean_ctor_get(x_1, 3);
x_5 = l_Lean_MetavarContext_Inhabited___closed__1;
x_6 = l_IO_runMeta___rarg___closed__4;
x_6 = l_Lean_Meta_run___rarg___closed__5;
x_7 = l_Lean_NameGenerator_Inhabited___closed__3;
x_8 = l_Lean_TraceState_Inhabited___closed__1;
x_9 = l_PersistentArray_empty___closed__3;

View file

@ -208,6 +208,7 @@ lean_object* l_List_replicate___rarg(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_Quotation_getPatternVars(lean_object*);
lean_object* l___private_Init_Lean_Elab_Quotation_7__getHeadInfo___lambda__3___closed__3;
lean_object* l___private_Init_Lean_Elab_Quotation_7__getHeadInfo___lambda__1___closed__2;
extern lean_object* l_Lean_Meta_run___rarg___closed__5;
lean_object* l___private_Init_Lean_Elab_Quotation_7__getHeadInfo___elambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_List_map___main___at___private_Init_Lean_Elab_Quotation_9__compileStxMatch___main___spec__1(lean_object*);
lean_object* l___private_Init_Lean_Elab_Quotation_2__quoteList___main___rarg(lean_object*, lean_object*);
@ -369,14 +370,12 @@ lean_object* l___private_Init_Lean_Elab_Quotation_11__letBindRhss___main___close
lean_object* l_Lean_mkFVar(lean_object*);
lean_object* l_List_head_x21___at___private_Init_Lean_Elab_Quotation_9__compileStxMatch___main___spec__2___closed__3;
lean_object* l_Lean_Elab_Term_TermElabM_inhabited___boxed(lean_object*, lean_object*);
extern lean_object* l_IO_runMeta___rarg___closed__4;
extern lean_object* l_Lean_nullKind___closed__1;
lean_object* l_List_foldl___main___at___private_Init_Lean_Elab_Quotation_13__toPreterm___main___spec__8(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Elab_Quotation_8__explodeHeadPat___closed__3;
lean_object* l_Lean_addMacroScope(lean_object*, lean_object*, lean_object*);
lean_object* l_Array_umapMAux___main___at_Lean_Elab_Term_Quotation_match__syntax_expand___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Elab_Term_elabListLit___closed__5;
extern lean_object* l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__1;
lean_object* l_Lean_Option_hasQuote(lean_object*);
uint8_t l_Lean_Syntax_isAtom(lean_object*);
extern lean_object* l_Lean_nullKind___closed__2;
@ -542,6 +541,7 @@ extern lean_object* l_Lean_Elab_Term_elabListLit___closed__3;
extern lean_object* l_Lean_Unhygienic_run___rarg___closed__1;
lean_object* l_Lean_mkNatLit(lean_object*);
lean_object* l_Lean_mkStrLit(lean_object*);
extern lean_object* l_Lean_Meta_run___rarg___closed__1;
lean_object* l_Lean_mkCTermIdFrom(lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Elab_Quotation_9__compileStxMatch___main___closed__1;
extern lean_object* l___private_Init_Lean_Elab_Term_5__expandCDot___main___closed__4;
@ -24904,7 +24904,7 @@ lean_inc(x_5);
lean_dec(x_1);
x_6 = l___private_Init_Lean_Elab_Quotation_14__oldRunTermElabM___rarg___closed__1;
x_7 = l_List_foldl___main___at___private_Init_Lean_Elab_Quotation_14__oldRunTermElabM___spec__1(x_6, x_4);
x_8 = l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__1;
x_8 = l_Lean_Meta_run___rarg___closed__1;
x_9 = l_Array_empty___closed__1;
x_10 = lean_unsigned_to_nat(0u);
x_11 = lean_unsigned_to_nat(10000u);
@ -24938,7 +24938,7 @@ lean_ctor_set_uint8(x_21, sizeof(void*)*10, x_20);
lean_ctor_set_uint8(x_21, sizeof(void*)*10 + 1, x_20);
lean_ctor_set_uint8(x_21, sizeof(void*)*10 + 2, x_20);
x_22 = l_Lean_MetavarContext_Inhabited___closed__1;
x_23 = l_IO_runMeta___rarg___closed__4;
x_23 = l_Lean_Meta_run___rarg___closed__5;
x_24 = l_Lean_NameGenerator_Inhabited___closed__3;
x_25 = l_Lean_TraceState_Inhabited___closed__1;
x_26 = l_PersistentArray_empty___closed__3;

View file

@ -1,6 +1,6 @@
// Lean compiler output
// Module: Init.Lean.Elab.Tactic
// Imports: Init.Lean.Elab.Term Init.Lean.Elab.Tactic.Basic Init.Lean.Elab.Tactic.ElabTerm Init.Lean.Elab.Tactic.Induction
// Imports: Init.Lean.Elab.Term Init.Lean.Elab.Tactic.Basic Init.Lean.Elab.Tactic.ElabTerm Init.Lean.Elab.Tactic.Induction Init.Lean.Elab.Tactic.Generalize
#include "runtime/lean.h"
#if defined(__clang__)
#pragma clang diagnostic ignored "-Wunused-parameter"
@ -17,6 +17,7 @@ lean_object* initialize_Init_Lean_Elab_Term(lean_object*);
lean_object* initialize_Init_Lean_Elab_Tactic_Basic(lean_object*);
lean_object* initialize_Init_Lean_Elab_Tactic_ElabTerm(lean_object*);
lean_object* initialize_Init_Lean_Elab_Tactic_Induction(lean_object*);
lean_object* initialize_Init_Lean_Elab_Tactic_Generalize(lean_object*);
static bool _G_initialized = false;
lean_object* initialize_Init_Lean_Elab_Tactic(lean_object* w) {
lean_object * res;
@ -34,6 +35,9 @@ lean_dec_ref(res);
res = initialize_Init_Lean_Elab_Tactic_Induction(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
res = initialize_Init_Lean_Elab_Tactic_Generalize(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
return lean_mk_io_result(lean_box(0));
}
#ifdef __cplusplus

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -282,6 +282,7 @@ lean_object* l_Lean_Elab_Term_withTransparency(lean_object*);
lean_object* l_HashMapImp_find_x3f___at_Lean_Elab_Term_elabTermAux___main___spec__5___boxed(lean_object*, lean_object*);
extern lean_object* l_Lean_Parser_Term_byTactic___elambda__1___closed__2;
lean_object* l_Lean_Elab_Term_withIncRecDepth___rarg___closed__1;
extern lean_object* l_Lean_Meta_run___rarg___closed__5;
lean_object* l_Lean_Elab_Term_elabListLit___closed__2;
lean_object* l_Lean_Elab_Term_Lean_Elab_MonadMacroAdapter___lambda__2(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_withConfig___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
@ -534,7 +535,6 @@ lean_object* l_Lean_Elab_Term_mkFreshAnonymousIdent___boxed(lean_object*, lean_o
lean_object* l_Lean_Elab_Term_elabRawNumLit(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabTermAux___main___closed__3;
lean_object* l___private_Init_Lean_Elab_Term_13__tryCoeSort___closed__3;
extern lean_object* l_IO_runMeta___rarg___closed__4;
extern lean_object* l_Lean_PersistentEnvExtension_inhabited___rarg___closed__3;
lean_object* l___private_Init_Lean_Elab_Term_6__isTypeApp_x3f(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Nat_foldMAux___main___at___private_Init_Lean_Elab_Term_18__mkFreshLevelMVars___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@ -935,7 +935,7 @@ _start:
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7;
x_1 = l_Lean_EnvExtension_setState___closed__1;
x_2 = l_Lean_MetavarContext_Inhabited___closed__1;
x_3 = l_IO_runMeta___rarg___closed__4;
x_3 = l_Lean_Meta_run___rarg___closed__5;
x_4 = l_Lean_NameGenerator_Inhabited___closed__3;
x_5 = l_Lean_TraceState_Inhabited___closed__1;
x_6 = l_PersistentArray_empty___closed__3;

View file

@ -64,7 +64,6 @@ lean_object* l_Lean_Expr_heq_x3f___closed__2;
lean_object* l_Lean_Expr_iff_x3f___closed__2;
lean_object* l_Lean_Expr_heq_x3f(lean_object*);
lean_object* lean_instantiate_type_lparams(lean_object*, lean_object*);
lean_object* l_Lean_Meta_mkEqRec___closed__2;
lean_object* l_Array_forMAux___main___at___private_Init_Lean_Meta_AppBuilder_2__mkAppMFinal___spec__1(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_mkHEqRefl___closed__1;
lean_object* l_Lean_Expr_eq_x3f(lean_object*);
@ -75,6 +74,7 @@ lean_object* l_Lean_Meta_mkEqRec___closed__1;
lean_object* lean_name_mk_string(lean_object*, lean_object*);
lean_object* l_Lean_Meta_mkEqNDRec(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Expr_iff_x3f___closed__1;
extern lean_object* l_Lean_mkRecFor___closed__1;
lean_object* l_Lean_Meta_mkEqTrans___closed__2;
lean_object* l_Lean_Meta_mkCongrFun___closed__1;
lean_object* l_Lean_mkLambda(lean_object*, uint8_t, lean_object*, lean_object*);
@ -7770,17 +7770,9 @@ return x_210;
lean_object* _init_l_Lean_Meta_mkEqRec___closed__1() {
_start:
{
lean_object* x_1;
x_1 = lean_mk_string("rec");
return x_1;
}
}
lean_object* _init_l_Lean_Meta_mkEqRec___closed__2() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Expr_eq_x3f___closed__2;
x_2 = l_Lean_Meta_mkEqRec___closed__1;
x_2 = l_Lean_mkRecFor___closed__1;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
@ -7834,7 +7826,7 @@ lean_ctor_set(x_20, 2, x_17);
lean_ctor_set(x_20, 3, x_19);
x_21 = l_Lean_mkOptionalNode___closed__2;
x_22 = lean_array_push(x_21, x_3);
x_23 = l_Lean_Meta_mkEqRec___closed__2;
x_23 = l_Lean_Meta_mkEqRec___closed__1;
x_24 = l_Lean_Meta_mkEqSymm___closed__3;
x_25 = lean_alloc_ctor(16, 4, 0);
lean_ctor_set(x_25, 0, x_23);
@ -7924,7 +7916,7 @@ lean_ctor_set(x_65, 1, x_64);
x_66 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_66, 0, x_63);
lean_ctor_set(x_66, 1, x_65);
x_67 = l_Lean_Meta_mkEqRec___closed__2;
x_67 = l_Lean_Meta_mkEqRec___closed__1;
x_68 = l_Lean_mkConst(x_67, x_66);
x_69 = l_Lean_Meta_mkEqNDRec___closed__4;
x_70 = lean_array_push(x_69, x_31);
@ -8009,7 +8001,7 @@ lean_ctor_set(x_53, 2, x_50);
lean_ctor_set(x_53, 3, x_52);
x_54 = l_Lean_mkOptionalNode___closed__2;
x_55 = lean_array_push(x_54, x_1);
x_56 = l_Lean_Meta_mkEqRec___closed__2;
x_56 = l_Lean_Meta_mkEqRec___closed__1;
x_57 = l_Lean_Meta_mkEqNDRec___closed__3;
x_58 = lean_alloc_ctor(16, 4, 0);
lean_ctor_set(x_58, 0, x_56);
@ -8112,7 +8104,7 @@ lean_ctor_set(x_108, 1, x_107);
x_109 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_109, 0, x_106);
lean_ctor_set(x_109, 1, x_108);
x_110 = l_Lean_Meta_mkEqRec___closed__2;
x_110 = l_Lean_Meta_mkEqRec___closed__1;
x_111 = l_Lean_mkConst(x_110, x_109);
x_112 = l_Lean_Meta_mkEqNDRec___closed__4;
x_113 = lean_array_push(x_112, x_31);
@ -8195,7 +8187,7 @@ lean_ctor_set(x_96, 2, x_93);
lean_ctor_set(x_96, 3, x_95);
x_97 = l_Lean_mkOptionalNode___closed__2;
x_98 = lean_array_push(x_97, x_1);
x_99 = l_Lean_Meta_mkEqRec___closed__2;
x_99 = l_Lean_Meta_mkEqRec___closed__1;
x_100 = l_Lean_Meta_mkEqNDRec___closed__3;
x_101 = lean_alloc_ctor(16, 4, 0);
lean_ctor_set(x_101, 0, x_99);
@ -8314,7 +8306,7 @@ lean_ctor_set(x_142, 2, x_139);
lean_ctor_set(x_142, 3, x_141);
x_143 = l_Lean_mkOptionalNode___closed__2;
x_144 = lean_array_push(x_143, x_3);
x_145 = l_Lean_Meta_mkEqRec___closed__2;
x_145 = l_Lean_Meta_mkEqRec___closed__1;
x_146 = l_Lean_Meta_mkEqSymm___closed__3;
x_147 = lean_alloc_ctor(16, 4, 0);
lean_ctor_set(x_147, 0, x_145);
@ -8410,7 +8402,7 @@ lean_ctor_set(x_188, 1, x_187);
x_189 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_189, 0, x_186);
lean_ctor_set(x_189, 1, x_188);
x_190 = l_Lean_Meta_mkEqRec___closed__2;
x_190 = l_Lean_Meta_mkEqRec___closed__1;
x_191 = l_Lean_mkConst(x_190, x_189);
x_192 = l_Lean_Meta_mkEqNDRec___closed__4;
x_193 = lean_array_push(x_192, x_154);
@ -8500,7 +8492,7 @@ lean_ctor_set(x_176, 2, x_173);
lean_ctor_set(x_176, 3, x_175);
x_177 = l_Lean_mkOptionalNode___closed__2;
x_178 = lean_array_push(x_177, x_1);
x_179 = l_Lean_Meta_mkEqRec___closed__2;
x_179 = l_Lean_Meta_mkEqRec___closed__1;
x_180 = l_Lean_Meta_mkEqNDRec___closed__3;
x_181 = lean_alloc_ctor(16, 4, 0);
lean_ctor_set(x_181, 0, x_179);
@ -8771,8 +8763,6 @@ l_Lean_Meta_mkEqNDRec___closed__4 = _init_l_Lean_Meta_mkEqNDRec___closed__4();
lean_mark_persistent(l_Lean_Meta_mkEqNDRec___closed__4);
l_Lean_Meta_mkEqRec___closed__1 = _init_l_Lean_Meta_mkEqRec___closed__1();
lean_mark_persistent(l_Lean_Meta_mkEqRec___closed__1);
l_Lean_Meta_mkEqRec___closed__2 = _init_l_Lean_Meta_mkEqRec___closed__2();
lean_mark_persistent(l_Lean_Meta_mkEqRec___closed__2);
l_Lean_Meta_mkEqMP___closed__1 = _init_l_Lean_Meta_mkEqMP___closed__1();
lean_mark_persistent(l_Lean_Meta_mkEqMP___closed__1);
l_Lean_Meta_mkEqMP___closed__2 = _init_l_Lean_Meta_mkEqMP___closed__2();

View file

@ -142,6 +142,7 @@ lean_object* l_Lean_Meta_shouldReduceAll(lean_object*, lean_object*);
lean_object* l_Lean_Meta_isClass(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstance___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_run___rarg___closed__5;
lean_object* l_Lean_Meta_throwEx___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_dbgTrace___rarg___closed__1;
lean_object* l_Lean_Meta_mkMetaExtension(lean_object*);
@ -203,18 +204,19 @@ lean_object* l_Lean_Meta_metaExt___closed__2;
lean_object* l_Lean_Meta_savingCache___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_inferTypeRef;
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_isClassExpensive___main___spec__5___lambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_run___rarg___closed__3;
uint8_t l_Lean_Meta_TransparencyMode_Inhabited;
lean_object* l_Lean_Meta_throwEx(lean_object*);
size_t l_Lean_Expr_hash(lean_object*);
lean_object* l_Lean_Meta_isReadOnlyExprMVar(lean_object*, lean_object*, lean_object*);
lean_object* lean_name_mk_string(lean_object*, lean_object*);
lean_object* l_Lean_Meta_metaExt___closed__1;
lean_object* l_Lean_Meta_run___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_ReaderT_pure___at_Lean_Meta_MetaExtState_inhabited___spec__1(lean_object*);
lean_object* l_Lean_Meta_InfoCacheKey_HasBeq___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Meta_setMVarKind(lean_object*, uint8_t, lean_object*, lean_object*);
extern lean_object* l_PersistentArray_empty___closed__3;
uint8_t l_Array_isEqvAux___main___at_Lean_Meta_withLocalContext___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_IO_runMeta___rarg___closed__3;
lean_object* l_Lean_Meta_lambdaMetaTelescope(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_addContext(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_mkSynthPendingRef___closed__1;
@ -223,6 +225,7 @@ lean_object* l_Lean_Meta_TransparencyMode_HasBeq___closed__1;
lean_object* l_Lean_Meta_withNewLocalInstances(lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___main(lean_object*);
lean_object* l___private_Init_Lean_Meta_Basic_8__lambdaMetaTelescopeAux___main___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Options_empty;
extern lean_object* l_IO_Error_Inhabited___closed__1;
lean_object* l_Lean_Meta_approxDefEq___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_withAtLeastTransparency___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
@ -231,6 +234,7 @@ lean_object* l_Lean_Meta_MetaExtState_inhabited___lambda__2___boxed(lean_object*
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallTelescopeReducing___spec__4___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
uint8_t l_Lean_Meta_TransparencyMode_beq(uint8_t, uint8_t);
extern lean_object* l___private_Init_Lean_Environment_5__envExtensionsRef;
lean_object* l_Lean_Meta_run___rarg___closed__2;
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_isClassExpensive___main___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_assignLevelMVar(lean_object*, lean_object*, lean_object*, lean_object*);
@ -252,11 +256,11 @@ lean_object* l___private_Init_Lean_Meta_Basic_4__forallTelescopeReducingAuxAux__
lean_object* l_Lean_Meta_forallMetaTelescopeReducing___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallTelescopeReducing___spec__3___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_mkFVar(lean_object*);
lean_object* l_Lean_Meta_run___rarg___closed__4;
uint8_t l_Lean_Expr_Data_binderInfo(uint64_t);
lean_object* l_Lean_Meta_liftStateMCtx___rarg(lean_object*, lean_object*, lean_object*);
size_t lean_usize_of_nat(lean_object*);
lean_object* l_Lean_Meta_mkMetaExtension___lambda__1(lean_object*, lean_object*);
lean_object* l_IO_runMeta___rarg___closed__4;
lean_object* l_Lean_Meta_withLocalDecl___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallTelescopeReducing___spec__4___rarg___lambda__1(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_isClassExpensive___main___spec__5(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@ -266,6 +270,7 @@ lean_object* l_Lean_Meta_getMVarDecl___boxed(lean_object*, lean_object*, lean_ob
lean_object* l___private_Init_Lean_Meta_Basic_4__forallTelescopeReducingAuxAux___main___at_Lean_Meta_forallTelescope___spec__1(lean_object*);
lean_object* l_Lean_Meta_getMCtx___boxed(lean_object*);
lean_object* l_Lean_Meta_isClassQuick(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_run(lean_object*);
lean_object* l_IO_runMeta(lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallBoundedTelescope___spec__5___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_forallMetaTelescopeReducing(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*);
@ -279,9 +284,7 @@ lean_object* lean_local_ctx_mk_local_decl(lean_object*, lean_object*, lean_objec
lean_object* l_Lean_Meta_mkIsExprDefEqAuxRef___lambda__1___closed__1;
lean_object* l___private_Init_Lean_Meta_Basic_6__lambdaTelescopeAux___main(lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallTelescope___spec__2___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_PersistentHashMap_empty___at_IO_runMeta___spec__1;
lean_object* l_Lean_Meta_withIncRecDepth(lean_object*);
lean_object* l_IO_runMeta___rarg___closed__1;
lean_object* l_Lean_Meta_assignExprMVar(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_mkIsExprDefEqAuxRef___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallTelescopeReducing___spec__5(lean_object*);
@ -291,6 +294,7 @@ lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallBound
lean_object* l_Lean_Meta_mkIsExprDefEqAuxRef___closed__1;
lean_object* l___private_Init_Lean_Meta_Basic_4__forallTelescopeReducingAuxAux___main___rarg___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_hasAssignableMVar(lean_object*, lean_object*, lean_object*);
lean_object* l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1___closed__1;
lean_object* l_Lean_Meta_mkIsExprDefEqAuxRef___lambda__1___closed__2;
lean_object* l_Lean_Meta_withNewLocalInstances___main___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_ParamInfo_inhabited;
@ -313,7 +317,6 @@ lean_object* l_Lean_Meta_synthPendingRef;
lean_object* l_Lean_Meta_getConstAux(lean_object*, uint8_t, lean_object*, lean_object*);
lean_object* lean_metavar_ctx_assign_level(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_throwEx___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_IO_runMeta___rarg___closed__2;
lean_object* l_Lean_Meta_elimMVarDeps___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_withMVarContext___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Meta_Basic_1__whenDebugging___rarg(lean_object*, lean_object*, lean_object*);
@ -348,7 +351,6 @@ lean_object* lean_metavar_ctx_find_decl(lean_object*, lean_object*);
lean_object* l_Lean_Meta_dbgTrace(lean_object*);
lean_object* l_Lean_Meta_mkFreshId(lean_object*);
lean_object* l___private_Init_Lean_Meta_Basic_8__lambdaMetaTelescopeAux___main(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_PersistentHashMap_empty___at_IO_runMeta___spec__1___closed__1;
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallTelescope___spec__3___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_TransparencyMode_beq___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Meta_metaExt___elambda__1(lean_object*);
@ -357,6 +359,7 @@ lean_object* l___private_Init_Lean_Meta_Basic_4__forallTelescopeReducingAuxAux__
extern lean_object* l_Lean_TraceState_Inhabited___closed__1;
lean_object* l_Lean_Meta_inferType(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_instantiateMVars___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1;
lean_object* lean_io_ref_set(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Meta_Basic_5__forallTelescopeReducingAux___at_Lean_Meta_forallBoundedTelescope___spec__1(lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallBoundedTelescope___spec__4(lean_object*);
@ -397,6 +400,7 @@ lean_object* l___private_Init_Lean_Meta_Basic_3__liftMkBindingM(lean_object*);
lean_object* l_Lean_Meta_withNewLocalInstances___main___at_Lean_Meta_forallTelescope___spec__3(lean_object*);
lean_object* l_Lean_Meta_mkMetaExtension___closed__3;
lean_object* l_Lean_Meta_isClassQuick___main___closed__1;
lean_object* l_Lean_Meta_run___rarg___closed__1;
uint8_t l_Lean_LocalInstance_beq(lean_object*, lean_object*);
lean_object* l_Lean_registerEnvExtensionUnsafe___at_Lean_Meta_mkMetaExtension___spec__1___closed__2;
lean_object* l_Lean_Meta_resettingSynthInstanceCache___rarg___closed__1;
@ -47834,7 +47838,7 @@ x_3 = l_Lean_registerTraceClass(x_2, x_1);
return x_3;
}
}
lean_object* _init_l_PersistentHashMap_empty___at_IO_runMeta___spec__1___closed__1() {
lean_object* _init_l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1___closed__1() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
@ -47846,15 +47850,34 @@ lean_ctor_set(x_3, 1, x_2);
return x_3;
}
}
lean_object* _init_l_PersistentHashMap_empty___at_IO_runMeta___spec__1() {
lean_object* _init_l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1() {
_start:
{
lean_object* x_1;
x_1 = l_PersistentHashMap_empty___at_IO_runMeta___spec__1___closed__1;
x_1 = l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1___closed__1;
return x_1;
}
}
lean_object* _init_l_IO_runMeta___rarg___closed__1() {
lean_object* _init_l_Lean_Meta_run___rarg___closed__1() {
_start:
{
lean_object* x_1; uint8_t x_2; uint8_t x_3; lean_object* x_4;
x_1 = l_Lean_Options_empty;
x_2 = 0;
x_3 = 1;
x_4 = lean_alloc_ctor(0, 1, 7);
lean_ctor_set(x_4, 0, x_1);
lean_ctor_set_uint8(x_4, sizeof(void*)*1, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 1, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 2, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 3, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 4, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 5, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 6, x_3);
return x_4;
}
}
lean_object* _init_l_Lean_Meta_run___rarg___closed__2() {
_start:
{
lean_object* x_1;
@ -47862,7 +47885,7 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Meta_InfoCacheKey_Hashable___boxed), 1,
return x_1;
}
}
lean_object* _init_l_IO_runMeta___rarg___closed__2() {
lean_object* _init_l_Lean_Meta_run___rarg___closed__3() {
_start:
{
lean_object* x_1;
@ -47870,7 +47893,7 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Meta_InfoCacheKey_HasBeq___boxed), 2, 0)
return x_1;
}
}
lean_object* _init_l_IO_runMeta___rarg___closed__3() {
lean_object* _init_l_Lean_Meta_run___rarg___closed__4() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
@ -47882,12 +47905,12 @@ lean_ctor_set(x_3, 1, x_2);
return x_3;
}
}
lean_object* _init_l_IO_runMeta___rarg___closed__4() {
lean_object* _init_l_Lean_Meta_run___rarg___closed__5() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4;
x_1 = l_PersistentHashMap_empty___at_IO_runMeta___spec__1;
x_2 = l_IO_runMeta___rarg___closed__3;
x_1 = l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1;
x_2 = l_Lean_Meta_run___rarg___closed__4;
x_3 = l_Lean_Meta_resettingSynthInstanceCache___rarg___closed__1;
x_4 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_4, 0, x_1);
@ -47896,6 +47919,63 @@ lean_ctor_set(x_4, 2, x_3);
return x_4;
}
}
lean_object* l_Lean_Meta_run___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{
lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15;
x_4 = l_Lean_Meta_run___rarg___closed__1;
x_5 = l_Lean_LocalContext_Inhabited___closed__2;
x_6 = l_Array_empty___closed__1;
x_7 = lean_unsigned_to_nat(0u);
x_8 = lean_alloc_ctor(0, 5, 0);
lean_ctor_set(x_8, 0, x_4);
lean_ctor_set(x_8, 1, x_5);
lean_ctor_set(x_8, 2, x_6);
lean_ctor_set(x_8, 3, x_7);
lean_ctor_set(x_8, 4, x_3);
x_9 = l_Lean_MetavarContext_Inhabited___closed__1;
x_10 = l_Lean_Meta_run___rarg___closed__5;
x_11 = l_Lean_NameGenerator_Inhabited___closed__3;
x_12 = l_Lean_TraceState_Inhabited___closed__1;
x_13 = l_PersistentArray_empty___closed__3;
x_14 = lean_alloc_ctor(0, 6, 0);
lean_ctor_set(x_14, 0, x_1);
lean_ctor_set(x_14, 1, x_9);
lean_ctor_set(x_14, 2, x_10);
lean_ctor_set(x_14, 3, x_11);
lean_ctor_set(x_14, 4, x_12);
lean_ctor_set(x_14, 5, x_13);
x_15 = lean_apply_2(x_2, x_8, x_14);
if (lean_obj_tag(x_15) == 0)
{
lean_object* x_16; lean_object* x_17;
x_16 = lean_ctor_get(x_15, 0);
lean_inc(x_16);
lean_dec(x_15);
x_17 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_17, 0, x_16);
return x_17;
}
else
{
lean_object* x_18; lean_object* x_19;
x_18 = lean_ctor_get(x_15, 0);
lean_inc(x_18);
lean_dec(x_15);
x_19 = lean_alloc_ctor(0, 1, 0);
lean_ctor_set(x_19, 0, x_18);
return x_19;
}
}
}
lean_object* l_Lean_Meta_run(lean_object* x_1) {
_start:
{
lean_object* x_2;
x_2 = lean_alloc_closure((void*)(l_Lean_Meta_run___rarg), 3, 0);
return x_2;
}
}
lean_object* l_IO_runMeta___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
_start:
{
@ -47911,7 +47991,7 @@ lean_ctor_set(x_9, 2, x_6);
lean_ctor_set(x_9, 3, x_7);
lean_ctor_set(x_9, 4, x_8);
x_10 = l_Lean_MetavarContext_Inhabited___closed__1;
x_11 = l_IO_runMeta___rarg___closed__4;
x_11 = l_Lean_Meta_run___rarg___closed__5;
x_12 = l_Lean_NameGenerator_Inhabited___closed__3;
x_13 = l_Lean_TraceState_Inhabited___closed__1;
x_14 = l_PersistentArray_empty___closed__3;
@ -48162,18 +48242,20 @@ lean_mark_persistent(l___private_Init_Lean_Meta_Basic_10__regTraceClasses___clos
res = l___private_Init_Lean_Meta_Basic_10__regTraceClasses(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
l_PersistentHashMap_empty___at_IO_runMeta___spec__1___closed__1 = _init_l_PersistentHashMap_empty___at_IO_runMeta___spec__1___closed__1();
lean_mark_persistent(l_PersistentHashMap_empty___at_IO_runMeta___spec__1___closed__1);
l_PersistentHashMap_empty___at_IO_runMeta___spec__1 = _init_l_PersistentHashMap_empty___at_IO_runMeta___spec__1();
lean_mark_persistent(l_PersistentHashMap_empty___at_IO_runMeta___spec__1);
l_IO_runMeta___rarg___closed__1 = _init_l_IO_runMeta___rarg___closed__1();
lean_mark_persistent(l_IO_runMeta___rarg___closed__1);
l_IO_runMeta___rarg___closed__2 = _init_l_IO_runMeta___rarg___closed__2();
lean_mark_persistent(l_IO_runMeta___rarg___closed__2);
l_IO_runMeta___rarg___closed__3 = _init_l_IO_runMeta___rarg___closed__3();
lean_mark_persistent(l_IO_runMeta___rarg___closed__3);
l_IO_runMeta___rarg___closed__4 = _init_l_IO_runMeta___rarg___closed__4();
lean_mark_persistent(l_IO_runMeta___rarg___closed__4);
l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1___closed__1 = _init_l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1___closed__1();
lean_mark_persistent(l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1___closed__1);
l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1 = _init_l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1();
lean_mark_persistent(l_PersistentHashMap_empty___at_Lean_Meta_run___spec__1);
l_Lean_Meta_run___rarg___closed__1 = _init_l_Lean_Meta_run___rarg___closed__1();
lean_mark_persistent(l_Lean_Meta_run___rarg___closed__1);
l_Lean_Meta_run___rarg___closed__2 = _init_l_Lean_Meta_run___rarg___closed__2();
lean_mark_persistent(l_Lean_Meta_run___rarg___closed__2);
l_Lean_Meta_run___rarg___closed__3 = _init_l_Lean_Meta_run___rarg___closed__3();
lean_mark_persistent(l_Lean_Meta_run___rarg___closed__3);
l_Lean_Meta_run___rarg___closed__4 = _init_l_Lean_Meta_run___rarg___closed__4();
lean_mark_persistent(l_Lean_Meta_run___rarg___closed__4);
l_Lean_Meta_run___rarg___closed__5 = _init_l_Lean_Meta_run___rarg___closed__5();
lean_mark_persistent(l_Lean_Meta_run___rarg___closed__5);
return lean_mk_io_result(lean_box(0));
}
#ifdef __cplusplus

View file

@ -61,6 +61,7 @@ lean_object* l_Lean_Environment_getGlobalInstances___boxed(lean_object*);
lean_object* l_Lean_Meta_mkInstanceExtension___closed__5;
lean_object* lean_add_instance(lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_LocalContext_Inhabited___closed__2;
extern lean_object* l_Lean_Meta_run___rarg___closed__5;
lean_object* l_Lean_registerSimplePersistentEnvExtension___rarg___lambda__2(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Meta_mkInstanceExtension___closed__3;
lean_object* l_Lean_Meta_instanceExtension___closed__5;
@ -92,7 +93,6 @@ lean_object* l_Lean_Meta_getGlobalInstances___rarg(lean_object*);
extern lean_object* l_PersistentArray_empty___closed__3;
lean_object* l_Lean_Meta_instanceExtension___elambda__1(lean_object*);
lean_object* l_Lean_Meta_addGlobalInstance___closed__1;
extern lean_object* l_Lean_Options_empty;
extern lean_object* l_IO_Error_Inhabited___closed__1;
extern lean_object* l___private_Init_Lean_Environment_5__envExtensionsRef;
lean_object* l_Lean_registerBuiltinAttribute(lean_object*, lean_object*);
@ -102,9 +102,7 @@ size_t l_USize_mul(size_t, size_t);
lean_object* l_PersistentHashMap_find_x3f___at_Lean_Meta_addInstanceEntry___spec__2___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Meta_instanceExtension___closed__1;
lean_object* l_Lean_Meta_instanceExtension___closed__2;
extern lean_object* l_IO_runMeta___rarg___closed__4;
lean_object* l_Lean_Meta_registerInstanceAttr___lambda__1___closed__2;
lean_object* l_Lean_Meta_addGlobalInstance___closed__4;
lean_object* lean_add_instance_old(lean_object*, lean_object*);
lean_object* l_Lean_PersistentEnvExtension_addEntry___rarg(lean_object*, lean_object*, lean_object*);
size_t l_USize_land(size_t, size_t);
@ -159,6 +157,7 @@ extern lean_object* l_Lean_registerPersistentEnvExtensionUnsafe___rarg___closed_
lean_object* l_Lean_Meta_DiscrTree_insertCore___at_Lean_Meta_addInstanceEntry___spec__1___boxed(lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_MetavarContext_Inhabited___closed__1;
lean_object* l_Lean_Meta_mkInstanceExtension___closed__2;
extern lean_object* l_Lean_Meta_run___rarg___closed__1;
lean_object* l_Lean_Meta_instanceExtension___elambda__3(lean_object*, lean_object*);
lean_object* l_Lean_Meta_mkInstanceExtension___closed__4;
lean_object* l_Lean_Meta_getGlobalInstances___boxed(lean_object*);
@ -3212,27 +3211,8 @@ return x_2;
lean_object* _init_l_Lean_Meta_addGlobalInstance___closed__3() {
_start:
{
lean_object* x_1; uint8_t x_2; uint8_t x_3; lean_object* x_4;
x_1 = l_Lean_Options_empty;
x_2 = 0;
x_3 = 1;
x_4 = lean_alloc_ctor(0, 1, 7);
lean_ctor_set(x_4, 0, x_1);
lean_ctor_set_uint8(x_4, sizeof(void*)*1, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 1, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 2, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 3, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 4, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 5, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 6, x_3);
return x_4;
}
}
lean_object* _init_l_Lean_Meta_addGlobalInstance___closed__4() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
x_1 = l_Lean_Meta_addGlobalInstance___closed__3;
x_1 = l_Lean_Meta_run___rarg___closed__1;
x_2 = l_Lean_LocalContext_Inhabited___closed__2;
x_3 = l_Array_empty___closed__1;
x_4 = lean_unsigned_to_nat(0u);
@ -3275,7 +3255,7 @@ lean_dec(x_7);
x_9 = l_List_map___main___at_Lean_Meta_addGlobalInstance___spec__1(x_8);
x_10 = l_Lean_mkConst(x_2, x_9);
x_11 = l_Lean_MetavarContext_Inhabited___closed__1;
x_12 = l_IO_runMeta___rarg___closed__4;
x_12 = l_Lean_Meta_run___rarg___closed__5;
x_13 = l_Lean_NameGenerator_Inhabited___closed__3;
x_14 = l_Lean_TraceState_Inhabited___closed__1;
x_15 = l_PersistentArray_empty___closed__3;
@ -3286,7 +3266,7 @@ lean_ctor_set(x_16, 2, x_12);
lean_ctor_set(x_16, 3, x_13);
lean_ctor_set(x_16, 4, x_14);
lean_ctor_set(x_16, 5, x_15);
x_17 = l_Lean_Meta_addGlobalInstance___closed__4;
x_17 = l_Lean_Meta_addGlobalInstance___closed__3;
lean_inc(x_10);
x_18 = l___private_Init_Lean_Meta_Instances_1__mkInstanceKey(x_10, x_17, x_16);
if (lean_obj_tag(x_18) == 0)
@ -3646,8 +3626,6 @@ l_Lean_Meta_addGlobalInstance___closed__2 = _init_l_Lean_Meta_addGlobalInstance_
lean_mark_persistent(l_Lean_Meta_addGlobalInstance___closed__2);
l_Lean_Meta_addGlobalInstance___closed__3 = _init_l_Lean_Meta_addGlobalInstance___closed__3();
lean_mark_persistent(l_Lean_Meta_addGlobalInstance___closed__3);
l_Lean_Meta_addGlobalInstance___closed__4 = _init_l_Lean_Meta_addGlobalInstance___closed__4();
lean_mark_persistent(l_Lean_Meta_addGlobalInstance___closed__4);
l_Lean_Meta_registerInstanceAttr___lambda__1___closed__1 = _init_l_Lean_Meta_registerInstanceAttr___lambda__1___closed__1();
lean_mark_persistent(l_Lean_Meta_registerInstanceAttr___lambda__1___closed__1);
l_Lean_Meta_registerInstanceAttr___lambda__1___closed__2 = _init_l_Lean_Meta_registerInstanceAttr___lambda__1___closed__2();

View file

@ -65,6 +65,7 @@ lean_object* l_Lean_Meta_Exception_toMessageData___closed__45;
extern lean_object* l_Lean_LocalContext_Inhabited___closed__2;
lean_object* l_Lean_Meta_Exception_mkAppTypeMismatchMessage___closed__11;
lean_object* l___private_Init_Lean_Meta_Message_4__whnf_x3f(lean_object*, lean_object*);
extern lean_object* l_Lean_Meta_run___rarg___closed__5;
lean_object* l_Lean_Meta_Exception_toMessageData___closed__8;
lean_object* l_Lean_KernelException_toMessageData___closed__6;
lean_object* l_Lean_Meta_Exception_toMessageData___closed__17;
@ -120,7 +121,6 @@ lean_object* l_Lean_Meta_Exception_toMessageData___closed__25;
lean_object* l_Lean_Meta_whnf(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Meta_Message_4__whnf_x3f___boxed(lean_object*, lean_object*);
lean_object* l_Lean_KernelException_toMessageData___closed__3;
extern lean_object* l_IO_runMeta___rarg___closed__4;
lean_object* l_Lean_KernelException_toMessageData___closed__40;
lean_object* l_Lean_KernelException_toMessageData___closed__9;
lean_object* l_Lean_Meta_Exception_toMessageData___closed__3;
@ -176,6 +176,7 @@ lean_object* l_Lean_KernelException_toMessageData___closed__13;
lean_object* l_Lean_Meta_Exception_mkAppTypeMismatchMessage___closed__3;
lean_object* l___private_Init_Lean_Meta_Message_1__run_x3f___rarg(lean_object*, lean_object*);
extern lean_object* l_Lean_MetavarContext_Inhabited___closed__1;
extern lean_object* l_Lean_Meta_run___rarg___closed__1;
extern lean_object* l_Lean_Meta_Exception_toStr___closed__15;
lean_object* l_Lean_Meta_Exception_toMessageData___closed__18;
lean_object* l_Lean_Meta_Exception_toMessageData___closed__30;
@ -193,7 +194,6 @@ lean_object* l_Lean_mkConst(lean_object*, lean_object*);
lean_object* l_PersistentArray_forMAux___main___at_Lean_Meta_MetaHasEval___spec__4(lean_object*, lean_object*);
lean_object* l_Lean_Meta_Exception_toMessageData___closed__15;
lean_object* l_Lean_Meta_Exception_toMessageData___closed__16;
lean_object* l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__4;
lean_object* l_Lean_KernelException_toMessageData___closed__11;
extern lean_object* l_Lean_NameGenerator_Inhabited___closed__3;
lean_object* l_Lean_Meta_Exception_toMessageData___closed__20;
@ -218,45 +218,26 @@ return x_5;
lean_object* _init_l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__1() {
_start:
{
lean_object* x_1; uint8_t x_2; uint8_t x_3; lean_object* x_4;
x_1 = l_Lean_Options_empty;
x_2 = 0;
x_3 = 1;
x_4 = lean_alloc_ctor(0, 1, 7);
lean_ctor_set(x_4, 0, x_1);
lean_ctor_set_uint8(x_4, sizeof(void*)*1, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 1, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 2, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 3, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 4, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 5, x_2);
lean_ctor_set_uint8(x_4, sizeof(void*)*1 + 6, x_3);
return x_4;
lean_object* x_1;
x_1 = lean_mk_string("_meta_exception");
return x_1;
}
}
lean_object* _init_l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__2() {
_start:
{
lean_object* x_1;
x_1 = lean_mk_string("_meta_exception");
return x_1;
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = lean_box(0);
x_2 = l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__1;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
lean_object* _init_l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__3() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = lean_box(0);
x_2 = l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__2;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
lean_object* _init_l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__4() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__3;
x_1 = l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__2;
x_2 = lean_unsigned_to_nat(1u);
x_3 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_3, 0, x_1);
@ -273,7 +254,7 @@ x_4 = lean_ctor_get(x_1, 1);
x_5 = lean_ctor_get(x_1, 2);
x_6 = lean_ctor_get(x_1, 3);
x_7 = l_Lean_getMaxRecDepth(x_6);
x_8 = l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__1;
x_8 = l_Lean_Meta_run___rarg___closed__1;
x_9 = l_Array_empty___closed__1;
x_10 = lean_unsigned_to_nat(0u);
lean_inc(x_5);
@ -283,8 +264,8 @@ lean_ctor_set(x_11, 1, x_5);
lean_ctor_set(x_11, 2, x_9);
lean_ctor_set(x_11, 3, x_10);
lean_ctor_set(x_11, 4, x_7);
x_12 = l_IO_runMeta___rarg___closed__4;
x_13 = l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__4;
x_12 = l_Lean_Meta_run___rarg___closed__5;
x_13 = l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__3;
x_14 = l_Lean_TraceState_Inhabited___closed__1;
x_15 = l_PersistentArray_empty___closed__3;
lean_inc(x_4);
@ -2111,7 +2092,7 @@ lean_ctor_set(x_13, 2, x_11);
lean_ctor_set(x_13, 3, x_12);
lean_ctor_set(x_13, 4, x_9);
x_14 = l_Lean_MetavarContext_Inhabited___closed__1;
x_15 = l_IO_runMeta___rarg___closed__4;
x_15 = l_Lean_Meta_run___rarg___closed__5;
x_16 = l_Lean_NameGenerator_Inhabited___closed__3;
x_17 = l_Lean_TraceState_Inhabited___closed__1;
x_18 = l_PersistentArray_empty___closed__3;
@ -3071,8 +3052,6 @@ l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__2 = _init_l___pri
lean_mark_persistent(l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__2);
l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__3 = _init_l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__3();
lean_mark_persistent(l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__3);
l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__4 = _init_l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__4();
lean_mark_persistent(l___private_Init_Lean_Meta_Message_1__run_x3f___rarg___closed__4);
l___private_Init_Lean_Meta_Message_3__inferDomain_x3f___lambda__1___closed__1 = _init_l___private_Init_Lean_Meta_Message_3__inferDomain_x3f___lambda__1___closed__1();
lean_mark_persistent(l___private_Init_Lean_Meta_Message_3__inferDomain_x3f___lambda__1___closed__1);
l___private_Init_Lean_Meta_Message_3__inferDomain_x3f___lambda__1___closed__2 = _init_l___private_Init_Lean_Meta_Message_3__inferDomain_x3f___lambda__1___closed__2();

File diff suppressed because it is too large Load diff

View file

@ -165,7 +165,6 @@ lean_object* l_Lean_Parser_Tactic_usingRec___elambda__1___closed__4;
lean_object* l_Lean_Parser_Tactic_inductionAlts___elambda__1(lean_object*, lean_object*);
lean_object* l_Lean_Parser_Tactic_traceState___closed__5;
extern lean_object* l_Lean_Parser_Term_structInst___elambda__1___closed__5;
lean_object* l_Lean_Parser_Tactic_inductionAlt___closed__10;
lean_object* l_Lean_Parser_sepBy1Fn___at_Lean_Parser_Tactic_inductionAlts___elambda__1___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_Tactic_clear___closed__3;
lean_object* l_Lean_Parser_Tactic_refine___elambda__1___closed__3;
@ -179,7 +178,6 @@ lean_object* l_Lean_Parser_Tactic_case___elambda__1(lean_object*, lean_object*);
lean_object* l_Lean_Parser_Tactic_case;
lean_object* l_Lean_Parser_Tactic_traceState___closed__1;
lean_object* l_Lean_Parser_Tactic_generalize___closed__9;
extern lean_object* l_Lean_Parser_ident___closed__2;
uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
lean_object* l_Lean_Parser_Tactic_generalizingVars___elambda__1(lean_object*, lean_object*);
extern lean_object* l_Lean_Parser_Term_orelse___elambda__1___closed__3;
@ -6771,22 +6769,21 @@ return x_3;
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__3() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_ident;
x_2 = lean_ctor_get(x_1, 0);
lean_inc(x_2);
x_3 = l_Lean_Parser_noFirstTokenInfo(x_2);
return x_3;
lean_object* x_1; lean_object* x_2;
x_1 = l_Lean_Parser_Tactic_ident_x27___closed__2;
x_2 = lean_alloc_closure((void*)(l_Lean_Parser_manyFn), 3, 1);
lean_closure_set(x_2, 0, x_1);
return x_2;
}
}
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__4() {
_start:
{
lean_object* x_1; lean_object* x_2;
x_1 = l_Lean_Parser_ident___closed__2;
x_2 = lean_alloc_closure((void*)(l_Lean_Parser_manyFn), 3, 1);
lean_closure_set(x_2, 0, x_1);
return x_2;
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_Tactic_intros___closed__2;
x_2 = l_Lean_Parser_Term_fun___closed__2;
x_3 = l_Lean_Parser_andthenInfo(x_1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__5() {
@ -6794,16 +6791,6 @@ _start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_Tactic_inductionAlt___closed__3;
x_2 = l_Lean_Parser_Term_fun___closed__2;
x_3 = l_Lean_Parser_andthenInfo(x_1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__6() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_Tactic_inductionAlt___closed__4;
x_2 = l_Lean_Parser_Term_matchAlt___closed__7;
x_3 = lean_alloc_closure((void*)(l_Lean_Parser_andthenFn), 4, 2);
lean_closure_set(x_3, 0, x_1);
@ -6811,49 +6798,49 @@ lean_closure_set(x_3, 1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__7() {
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__6() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4;
x_1 = l_Lean_Parser_ident;
x_1 = l_Lean_Parser_Tactic_ident_x27;
x_2 = lean_ctor_get(x_1, 0);
lean_inc(x_2);
x_3 = l_Lean_Parser_Tactic_inductionAlt___closed__5;
x_3 = l_Lean_Parser_Tactic_inductionAlt___closed__4;
x_4 = l_Lean_Parser_andthenInfo(x_2, x_3);
return x_4;
}
}
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__8() {
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__7() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_ident___closed__2;
x_2 = l_Lean_Parser_Tactic_inductionAlt___closed__6;
x_1 = l_Lean_Parser_Tactic_ident_x27___closed__2;
x_2 = l_Lean_Parser_Tactic_inductionAlt___closed__5;
x_3 = lean_alloc_closure((void*)(l_Lean_Parser_andthenFn), 4, 2);
lean_closure_set(x_3, 0, x_1);
lean_closure_set(x_3, 1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__9() {
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__8() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_Tactic_inductionAlt___closed__7;
x_2 = l_Lean_Parser_Tactic_inductionAlt___closed__8;
x_1 = l_Lean_Parser_Tactic_inductionAlt___closed__6;
x_2 = l_Lean_Parser_Tactic_inductionAlt___closed__7;
x_3 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_3, 0, x_1);
lean_ctor_set(x_3, 1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__10() {
lean_object* _init_l_Lean_Parser_Tactic_inductionAlt___closed__9() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4;
x_1 = l_Lean_Parser_Tactic_inductionAlt___closed__1;
x_2 = l_Lean_Parser_Tactic_inductionAlt___closed__2;
x_3 = l_Lean_Parser_Tactic_inductionAlt___closed__9;
x_3 = l_Lean_Parser_Tactic_inductionAlt___closed__8;
x_4 = l_Lean_Parser_nodeWithAntiquot(x_1, x_2, x_3);
return x_4;
}
@ -6862,7 +6849,7 @@ lean_object* _init_l_Lean_Parser_Tactic_inductionAlt() {
_start:
{
lean_object* x_1;
x_1 = l_Lean_Parser_Tactic_inductionAlt___closed__10;
x_1 = l_Lean_Parser_Tactic_inductionAlt___closed__9;
return x_1;
}
}
@ -12289,8 +12276,6 @@ l_Lean_Parser_Tactic_inductionAlt___closed__8 = _init_l_Lean_Parser_Tactic_induc
lean_mark_persistent(l_Lean_Parser_Tactic_inductionAlt___closed__8);
l_Lean_Parser_Tactic_inductionAlt___closed__9 = _init_l_Lean_Parser_Tactic_inductionAlt___closed__9();
lean_mark_persistent(l_Lean_Parser_Tactic_inductionAlt___closed__9);
l_Lean_Parser_Tactic_inductionAlt___closed__10 = _init_l_Lean_Parser_Tactic_inductionAlt___closed__10();
lean_mark_persistent(l_Lean_Parser_Tactic_inductionAlt___closed__10);
l_Lean_Parser_Tactic_inductionAlt = _init_l_Lean_Parser_Tactic_inductionAlt();
lean_mark_persistent(l_Lean_Parser_Tactic_inductionAlt);
l_Lean_Parser_Tactic_inductionAlts___closed__1 = _init_l_Lean_Parser_Tactic_inductionAlts___closed__1();