chore: update stage0

This commit is contained in:
Leonardo de Moura 2020-01-15 13:51:52 -08:00
parent b9c161b30c
commit 31cddbcb6f
29 changed files with 6770 additions and 3511 deletions

View file

@ -42,15 +42,6 @@ def components' : Name → List Name
def components (n : Name) : List Name :=
n.components'.reverse
@[extern "lean_name_eq"]
protected def beq : (@& Name) → (@& Name) → Bool
| anonymous, anonymous => true
| str p₁ s₁ _, str p₂ s₂ _ => s₁ == s₂ && beq p₁ p₂
| num p₁ n₁ _, num p₂ n₂ _ => n₁ == n₂ && beq p₁ p₂
| _, _ => false
instance : HasBeq Name := ⟨Name.beq⟩
def eqStr : Name → String → Bool
| str anonymous s _, s' => s == s'
| _, _ => false

View file

@ -207,30 +207,33 @@ private def elabCommandUsing (stx : Syntax) : List CommandElab → CommandElabM
| Exception.error _ => throw ex
| Exception.unsupportedSyntax => elabCommandUsing elabFns)
def elabCommandAux (stx : Syntax) : CommandElabM Unit :=
withIncRecDepth stx $ withFreshMacroScope $ match stx with
| Syntax.node _ _ => do
trace `Elab.step stx $ fun _ => stx;
s ← get;
let table := (commandElabAttribute.ext.getState s.env).table;
let k := stx.getKind;
match table.find? k with
| some elabFns => elabCommandUsing stx elabFns
| none => throwError stx ("command '" ++ toString k ++ "' has not been implemented")
| _ => throwError stx "unexpected command"
def elabCommand (stx : Syntax) : CommandElabM Unit :=
if stx.getKind == nullKind then
-- list of commands => elaborate in order
-- The parser will only ever return a single command at a time, but syntax quotations can return multiple ones
stx.getArgs.forM elabCommandAux
else
elabCommandAux stx
/- Elaborate `x` with `stx` on the macro stack -/
@[inline] def withMacroExpansion {α} (stx : Syntax) (x : CommandElabM α) : CommandElabM α :=
adaptReader (fun (ctx : Context) => { macroStack := stx :: ctx.macroStack, .. ctx }) x
partial def elabCommand : Syntax → CommandElabM Unit
| stx => withIncRecDepth stx $ withFreshMacroScope $ match stx with
| Syntax.node _ _ => do
trace `Elab.step stx $ fun _ => stx;
s ← get;
let table := (commandElabAttribute.ext.getState s.env).table;
let k := stx.getKind;
match table.find? k with
| some elabFns => elabCommandUsing stx elabFns
| none => do
scp ← getCurrMacroScope;
env ← getEnv;
match expandMacro env stx scp with
| some stx' => withMacroExpansion stx $
if stx'.getKind == nullKind then
-- list of commands => elaborate in order
-- The parser will only ever return a single command at a time, but syntax quotations can return multiple ones
stx'.getArgs.forM elabCommand
else
elabCommand stx'
| none => throwError stx ("command '" ++ toString k ++ "' has not been implemented")
| _ => throwError stx "unexpected command"
/-- Adapt a syntax transformation to a regular, command-producing elaborator. -/
def adaptExpander (exp : Syntax → CommandElabM Syntax) : CommandElab :=
fun stx => withMacroExpansion stx $ do

View file

@ -98,6 +98,7 @@ else withUsedWhen ref vars xs val type view.kind.isDefOrOpaque $ fun vars => do
val ← Term.levelMVarToParam val;
type ← Term.instantiateMVars ref type;
val ← Term.instantiateMVars view.val val;
Term.trace `Elab.definition.body ref $ fun _ => val;
let usedParams : CollectLevelParams.State := {};
let usedParams := collectLevelParams usedParams type;
let usedParams := collectLevelParams usedParams val;
@ -153,6 +154,10 @@ withDeclId view.declId $ fun name => do
compileDecl ref decl;
applyAttributes ref declName view.modifiers.attrs AttributeApplicationTime.afterCompilation
@[init] private def regTraceClasses : IO Unit := do
registerTraceClass `Elab.definition;
pure ()
end Command
end Elab
end Lean

View file

@ -118,10 +118,22 @@ fun stx => do
let catParserId := mkIdentFrom stx (cat.appendAfter "Parser");
type ← `(Lean.ParserDescr);
val ← runTermElabM none $ fun _ => Term.toParserDescr (stx.getArg 2);
d ← `(@[$catParserId:ident] private def $catParserId:ident : $type := ParserDescr.node $(quote kind) $val);
-- TODO: meaningful, unhygienic def name for selective parser `open`ing?
d ← `(@[$catParserId:ident] def myParser : $type := ParserDescr.node $(quote kind) $val);
trace `Elab stx $ fun _ => d;
withMacroExpansion stx $ elabCommand d
@[builtinCommandElab macro] def elabMacro : CommandElab :=
adaptExpander $ fun stx => match_syntax stx with
| `(macro $alts*) => do
-- TODO: clean up with matchAlt quotation
k ← match_syntax ((alts.get! 0).getArg 1).getArg 0 with
| `(`($quot)) => pure quot.getKind
| stx => throwUnsupportedSyntax;
-- TODO: meaningful, unhygienic def name for selective macro `open`ing?
`(@[macro $(Lean.mkSimpleIdent k)] def myMacro : Macro := fun stx => match_syntax stx with $alts* | _ => throw ())
| _ => throwUnsupportedSyntax
end Command
end Elab
end Lean

View file

@ -515,6 +515,29 @@ private def elabTermUsing (s : State) (stx : Syntax) (expectedType? : Option Exp
else
throw ex)
@[inline] def adaptMacro (x : Macro) (stx : Syntax) : TermElabM Syntax := do
scp ← getCurrMacroScope;
env ← getEnv;
match x stx scp with
| some stx => pure stx
| none => throwUnsupportedSyntax
/- Main loop for `elabTerm` -/
partial def elabTermAux (expectedType? : Option Expr) (catchExPostpone := true) (errToSorry := true) : Syntax → TermElabM Expr
| stx => withFreshMacroScope $ withIncRecDepth stx $ withNode stx $ fun node => do
trace `Elab.step stx $ fun _ => stx;
s ← get;
let table := (termElabAttribute.ext.getState s.env).table;
let k := node.getKind;
match table.find? k with
| some elabFns => elabTermUsing s node expectedType? errToSorry catchExPostpone elabFns
| none => do
scp ← getCurrMacroScope;
env ← getEnv;
match expandMacro env stx scp with
| some stx' => withMacroExpansion stx $ elabTermAux stx'
| none => throwError stx ("elaboration function for '" ++ toString k ++ "' has not been implemented")
/--
Main function for elaborating terms.
It extracts the elaboration methods from the environment using the node kind.
@ -529,14 +552,7 @@ private def elabTermUsing (s : State) (stx : Syntax) (expectedType? : Option Exp
The option `catchExPostpone == false` is used to implement `resumeElabTerm`
to prevent the creation of another synthetic metavariable when resuming the elaboration. -/
def elabTerm (stx : Syntax) (expectedType? : Option Expr) (catchExPostpone := true) (errToSorry := true) : TermElabM Expr :=
withFreshMacroScope $ withIncRecDepth stx $ withNode stx $ fun node => do
trace `Elab.step stx $ fun _ => stx;
s ← get;
let table := (termElabAttribute.ext.getState s.env).table;
let k := node.getKind;
match table.find? k with
| some elabFns => elabTermUsing s node expectedType? errToSorry catchExPostpone elabFns
| none => throwError stx ("elaboration function for '" ++ toString k ++ "' has not been implemented")
elabTermAux expectedType? catchExPostpone errToSorry stx
/-- Auxiliary function used to implement `synthesizeSyntheticMVars`. -/
private def resumeElabTerm (stx : Syntax) (expectedType? : Option Expr) (errToSorry := true) : TermElabM Expr :=

View file

@ -106,7 +106,8 @@ match mkElabFnOfConstant γ env typeName constName with
pure $ ext.addEntry env { kind := kind, elabFn := f, constName := constName }
/- TODO: add support for scoped attributes -/
def mkElabAttribute (γ) (attrName : Name) (parserNamespace : Name) (typeName : Name) (kind : String) (builtinTableRef : IO.Ref (ElabFnTable γ)) : IO (ElabAttribute γ) := do
def mkElabAttributeAux (γ) (attrName : Name) (parserNamespace : Name) (typeName : Name) (descr : String) (kind : String) (builtinTableRef : IO.Ref (ElabFnTable γ))
: IO (ElabAttribute γ) := do
ext : ElabAttributeExtension γ ← registerPersistentEnvExtension {
name := attrName,
mkInitial := ElabAttribute.mkInitial builtinTableRef,
@ -124,9 +125,38 @@ let attrImpl : AttributeImpl := {
registerBuiltinAttribute attrImpl;
pure { ext := ext, attr := attrImpl, kind := kind }
def mkElabAttribute (γ) (attrName : Name) (parserNamespace : Name) (typeName : Name) (kind : String) (builtinTableRef : IO.Ref (ElabFnTable γ))
: IO (ElabAttribute γ) :=
mkElabAttributeAux γ attrName parserNamespace typeName (kind ++ " elaborator") kind builtinTableRef
abbrev MacroAttribute := ElabAttribute Macro
abbrev MacroFnTable := ElabFnTable Macro
def mkBuiltinMacroFnTable : IO (IO.Ref MacroFnTable) := IO.mkRef {}
@[init mkBuiltinMacroFnTable] constant builtinMacroFnTable : IO.Ref MacroFnTable := arbitrary _
def mkMacroAttribute : IO MacroAttribute :=
mkElabAttributeAux Macro `macro Name.anonymous `Lean.Macro "macros" "macro" builtinMacroFnTable
@[init mkMacroAttribute] constant macroAttribute : MacroAttribute := arbitrary _
private def expandMacroFns (stx : Syntax) : List Macro → MacroM Syntax
| [] => throw ()
| m::ms => m stx <|> expandMacroFns ms
def expandMacro (env : Environment) : Macro :=
fun stx =>
let k := stx.getKind;
let table := (macroAttribute.ext.getState env).table;
match table.find? k with
| some macroFns => expandMacroFns stx macroFns
| none => throw ()
@[init] private def regTraceClasses : IO Unit := do
registerTraceClass `Elab;
registerTraceClass `Elab.step
end Elab
end Lean

View file

@ -2,59 +2,14 @@
Copyright (c) 2019 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sebastian Ullrich
Runtime support for making quotation terms auto-hygienic, by mangling identifiers
introduced by them with a "macro scope" supplied by the context. Details to appear in a
paper soon.
-/
prelude
import Init.Control
import Init.LeanInit
import Init.Lean.Syntax
namespace Lean
abbrev MacroScope := Nat
/-- A monad that supports syntax quotations. Syntax quotations (in term
position) are monadic values that when executed retrieve the current "macro
scope" from the monad and apply it to every identifier they introduce
(independent of whether this identifier turns out to be a reference to an
existing declaration, or an actually fresh binding during further
elaboration). -/
class MonadQuotation (m : Type → Type) :=
-- Get the fresh scope of the current macro invocation
(getCurrMacroScope {} : m MacroScope)
/- Execute action in a new macro invocation context. This transformer should be
used at all places that morally qualify as the beginning of a "macro call",
e.g. `elabCommand` and `elabTerm` in the case of the elaborator. However, it
can also be used internally inside a "macro" if identifiers introduced by
e.g. different recursive calls should be independent and not collide. While
returning an intermediate syntax tree that will recursively be expanded by
the elaborator can be used for the same effect, doing direct recursion inside
the macro guarded by this transformer is often easier because one is not
restricted to passing a single syntax tree. Modelling this helper as a
transformer and not just a monadic action ensures that the current macro
scope before the recursive call is restored after it, as expected. -/
(withFreshMacroScope {α : Type} : m α → m α)
export MonadQuotation
-- TODO: try harder to avoid clashes with other autogenerated names
def addMacroScope (n : Name) (scp : MacroScope) : Name :=
mkNameNum n scp
def addMacroScopes (n : Name) (scps : List MacroScope) : Name :=
scps.foldl addMacroScope n
private def extractMacroScopesAux : Name → List MacroScope → Name × List MacroScope
| Name.num n scp _, acc => extractMacroScopesAux n (scp::acc)
| n , acc => (n, acc.reverse)
/--
Revert all `addMacroScope` calls. `(n', scps) = extractMacroScopes n → n = addMacroScopes n' scps`.
This operation is useful for analyzing/transforming the original identifiers, then adding back
the scopes (via `addMacroScopes`). -/
def extractMacroScopes (n : Name) : Name × List MacroScope :=
extractMacroScopesAux n []
/- Remark: `MonadQuotation` class is part of the `Init` package and loaded by default since it is used in the builtin command `macro`. -/
/-- Simplistic MonadQuotation that does not guarantee globally fresh names, that
is, between different runs of this or other MonadQuotation implementations.
@ -80,6 +35,17 @@ instance MonadQuotation : MonadQuotation Unhygienic := {
protected def run {α : Type} (x : Unhygienic α) : α := run x 0 1
end Unhygienic
private def extractMacroScopesAux : Name → List MacroScope → Name × List MacroScope
| Name.num n scp _, acc => extractMacroScopesAux n (scp::acc)
| n , acc => (n, acc.reverse)
/--
Revert all `addMacroScope` calls. `(n', scps) = extractMacroScopes n → n = addMacroScopes n' scps`.
This operation is useful for analyzing/transforming the original identifiers, then adding back
the scopes (via `addMacroScopes`). -/
def extractMacroScopes (n : Name) : Name × List MacroScope :=
extractMacroScopesAux n []
instance monadQuotationTrans {m n : Type → Type} [MonadQuotation m] [HasMonadLift m n] [MonadFunctorT m m n n] : MonadQuotation n :=
{ getCurrMacroScope := liftM (getCurrMacroScope : m Nat),
withFreshMacroScope := fun α => monadMap (fun α => (withFreshMacroScope : m α → m α)) }

View file

@ -9,13 +9,6 @@ import Init.Lean.Data.Name
import Init.Lean.Data.Format
namespace Lean
structure SourceInfo :=
/- Will be inferred after parsing by `Syntax.updateLeading`. During parsing,
it is not at all clear what the preceding token was, especially with backtracking. -/
(leading : Substring)
(pos : String.Pos)
(trailing : Substring)
namespace SourceInfo
def updateTrailing (info : SourceInfo) (trailing : Substring) : SourceInfo :=
@ -36,8 +29,6 @@ end SourceInfo
/- Node kind generation -/
abbrev SyntaxNodeKind := Name
@[matchPattern] def choiceKind : SyntaxNodeKind := `choice
@[matchPattern] def nullKind : SyntaxNodeKind := `null
def strLitKind : SyntaxNodeKind := `strLit
@ -47,15 +38,6 @@ def fieldIdxKind : SyntaxNodeKind := `fieldIdx
/- Syntax AST -/
inductive Syntax
| missing {} : Syntax
| node (kind : SyntaxNodeKind) (args : Array Syntax) : Syntax
| atom {} (info : Option SourceInfo) (val : String) : Syntax
| ident {} (info : Option SourceInfo) (rawVal : Substring) (val : Name) (preresolved : List (Name × List String)) : Syntax
instance stxInh : Inhabited Syntax :=
⟨Syntax.missing⟩
def Syntax.isMissing : Syntax → Bool
| Syntax.missing => true
| _ => false
@ -138,12 +120,6 @@ def asNode : Syntax → SyntaxNode
def getNumArgs (stx : Syntax) : Nat :=
stx.asNode.getNumArgs
def getArgs (stx : Syntax) : Array Syntax :=
stx.asNode.getArgs
def getArg (stx : Syntax) (i : Nat) : Syntax :=
stx.asNode.getArg i
def setArgs (stx : Syntax) (args : Array Syntax) : Syntax :=
match stx with
| node k _ => node k args
@ -167,16 +143,6 @@ match stx with
def getIdAt (stx : Syntax) (i : Nat) : Name :=
(stx.getArg i).getId
def getKind (stx : Syntax) : SyntaxNodeKind :=
match stx with
| Syntax.node k args => k
-- We use these "pseudo kinds" for antiquotation kinds.
-- For example, an antiquotation `$id:ident` (using Lean.Parser.Term.ident)
-- is compiled to ``if stx.isOfKind `ident ...``
| Syntax.missing => `missing
| Syntax.atom _ v => v
| Syntax.ident _ _ _ _ => `ident
@[specialize] partial def mreplace {m : Type → Type} [Monad m] (fn : Syntax → m (Option Syntax)) : Syntax → m (Syntax)
| stx@(node kind args) => do
o ← fn stx;
@ -185,9 +151,6 @@ match stx with
| none => do args ← args.mapM mreplace; pure (node kind args)
| stx => do o ← fn stx; pure $ o.getD stx
def isOfKind : Syntax → SyntaxNodeKind → Bool
| stx, k => stx.getKind == k
@[specialize] partial def mrewriteBottomUp {m : Type → Type} [Monad m] (fn : Syntax → m (Syntax)) : Syntax → m (Syntax)
| node kind args => do
args ← args.mapM mrewriteBottomUp;

View file

@ -1,12 +1,15 @@
/-
Copyright (c) 2019 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura
Authors: Leonardo de Moura and Sebastian Ullrich
-/
prelude
import Init.Data.String.Basic
import Init.Data.Array.Basic
import Init.Data.UInt
import Init.Data.Hashable
import Init.Control.Reader
import Init.Control.Option
namespace Lean
/-
@ -47,6 +50,15 @@ Name.num p v $ mixHash (hash p) (hash v)
def mkNameSimple (s : String) : Name :=
mkNameStr Name.anonymous s
@[extern "lean_name_eq"]
protected def Name.beq : (@& Name) → (@& Name) → Bool
| Name.anonymous, Name.anonymous => true
| Name.str p₁ s₁ _, Name.str p₂ s₂ _ => s₁ == s₂ && Name.beq p₁ p₂
| Name.num p₁ n₁ _, Name.num p₂ n₂ _ => n₁ == n₂ && Name.beq p₁ p₂
| _, _ => false
instance : HasBeq Name := ⟨Name.beq⟩
inductive ParserKind
| leading | trailing
@ -97,4 +109,99 @@ abbrev TrailingParserDescr := ParserDescrCore ParserKind.trailing
@[matchPattern] abbrev ParserDescr.pushLeading := @ParserDescrCore.pushLeading
@[matchPattern] abbrev ParserDescr.parser := @ParserDescrCore.parser
/- Syntax -/
structure SourceInfo :=
/- Will be inferred after parsing by `Syntax.updateLeading`. During parsing,
it is not at all clear what the preceding token was, especially with backtracking. -/
(leading : Substring)
(pos : String.Pos)
(trailing : Substring)
abbrev SyntaxNodeKind := Name
/- Syntax AST -/
inductive Syntax
| missing {} : Syntax
| node (kind : SyntaxNodeKind) (args : Array Syntax) : Syntax
| atom {} (info : Option SourceInfo) (val : String) : Syntax
| ident {} (info : Option SourceInfo) (rawVal : Substring) (val : Name) (preresolved : List (Name × List String)) : Syntax
instance Syntax.inhabited : Inhabited Syntax :=
⟨Syntax.missing⟩
namespace Syntax
def getKind (stx : Syntax) : SyntaxNodeKind :=
match stx with
| Syntax.node k args => k
-- We use these "pseudo kinds" for antiquotation kinds.
-- For example, an antiquotation `$id:ident` (using Lean.Parser.Term.ident)
-- is compiled to ``if stx.isOfKind `ident ...``
| Syntax.missing => `missing
| Syntax.atom _ v => mkNameSimple v
| Syntax.ident _ _ _ _ => `ident
def isOfKind : Syntax → SyntaxNodeKind → Bool
| stx, k => stx.getKind == k
def getArg (stx : Syntax) (i : Nat) : Syntax :=
match stx with
| Syntax.node _ args => args.get! i
| _ => arbitrary _
def getArgs (stx : Syntax) : Array Syntax :=
match stx with
| Syntax.node _ args => args
| _ => #[]
end Syntax
/-
Runtime support for making quotation terms auto-hygienic, by mangling identifiers
introduced by them with a "macro scope" supplied by the context. Details to appear in a
paper soon.
-/
abbrev MacroScope := Nat
/-- A monad that supports syntax quotations. Syntax quotations (in term
position) are monadic values that when executed retrieve the current "macro
scope" from the monad and apply it to every identifier they introduce
(independent of whether this identifier turns out to be a reference to an
existing declaration, or an actually fresh binding during further
elaboration). -/
class MonadQuotation (m : Type → Type) :=
-- Get the fresh scope of the current macro invocation
(getCurrMacroScope {} : m MacroScope)
/- Execute action in a new macro invocation context. This transformer should be
used at all places that morally qualify as the beginning of a "macro call",
e.g. `elabCommand` and `elabTerm` in the case of the elaborator. However, it
can also be used internally inside a "macro" if identifiers introduced by
e.g. different recursive calls should be independent and not collide. While
returning an intermediate syntax tree that will recursively be expanded by
the elaborator can be used for the same effect, doing direct recursion inside
the macro guarded by this transformer is often easier because one is not
restricted to passing a single syntax tree. Modelling this helper as a
transformer and not just a monadic action ensures that the current macro
scope before the recursive call is restored after it, as expected. -/
(withFreshMacroScope {α : Type} : m α → m α)
export MonadQuotation
-- TODO: try harder to avoid clashes with other autogenerated names
def addMacroScope (n : Name) (scp : MacroScope) : Name :=
mkNameNum n scp
def addMacroScopes (n : Name) (scps : List MacroScope) : Name :=
scps.foldl addMacroScope n
abbrev MacroM := ReaderT MacroScope (OptionT Id)
instance MacroM.monadQuotation : MonadQuotation MacroM :=
{ getCurrMacroScope := fun scp => some scp,
withFreshMacroScope := fun _ x => x }
abbrev Macro := Syntax → MacroM Syntax
end Lean

View file

@ -52,7 +52,6 @@ extern lean_object* l_Lean_mkTagDeclarationExtension___closed__1;
lean_object* l_Lean_registerEnumAttributes___rarg___lambda__2___closed__3;
lean_object* l_Lean_ParametricAttribute_setParam___rarg___closed__2;
lean_object* l_Lean_attributeExtension___elambda__4___rarg(lean_object*);
extern lean_object* l_Lean_stxInh;
lean_object* l_Lean_ParametricAttribute_Inhabited(lean_object*);
lean_object* l_Lean_registerParametricAttribute___rarg___lambda__2___boxed(lean_object*, lean_object*);
lean_object* l_Lean_mkAttributeExtension___closed__2;
@ -246,6 +245,7 @@ extern lean_object* l_Lean_registerPersistentEnvExtensionUnsafe___rarg___closed_
lean_object* l_Lean_mkAttributeImplBuilderTable___closed__1;
lean_object* l_Array_qsortAux___main___at_Lean_registerEnumAttributes___spec__2(lean_object*);
lean_object* l_Array_qsortAux___main___at_Lean_registerEnumAttributes___spec__2___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Syntax_inhabited;
extern lean_object* l_Lean_registerPersistentEnvExtensionUnsafe___rarg___closed__1;
lean_object* l_Lean_EnumAttributes_Inhabited___closed__1;
uint8_t l_PersistentHashMap_containsAux___main___at_Lean_registerBuiltinAttribute___spec__2(lean_object*, size_t, lean_object*);
@ -10924,7 +10924,7 @@ return x_10;
else
{
lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_11 = l_Lean_stxInh;
x_11 = l_Lean_Syntax_inhabited;
x_12 = lean_unsigned_to_nat(0u);
x_13 = lean_array_get(x_11, x_3, x_12);
if (lean_obj_tag(x_13) == 3)

View file

@ -28,7 +28,6 @@ extern lean_object* l_Lean_registerEnvExtensionUnsafe___at_Lean_registerTagAttri
uint8_t l_Lean_Name_quickLt(lean_object*, lean_object*);
extern lean_object* l_Lean_mkProjectionFnInfoExtension___closed__3;
extern lean_object* l_Prod_HasRepr___rarg___closed__1;
extern lean_object* l_Lean_stxInh;
lean_object* l_Lean_ExternAttrData_inhabited___closed__1;
extern lean_object* l_Array_empty___closed__1;
extern lean_object* l_Lean_registerTagAttribute___closed__1;
@ -109,6 +108,7 @@ extern lean_object* l_Option_HasRepr___rarg___closed__3;
lean_object* l___private_Init_Lean_Compiler_ExternAttr_2__syntaxToExternAttrData(lean_object*);
lean_object* lean_get_extern_attr_data(lean_object*, lean_object*);
uint8_t l_UInt32_decEq(uint32_t, uint32_t);
extern lean_object* l_Lean_Syntax_inhabited;
extern lean_object* l_Lean_registerPersistentEnvExtensionUnsafe___rarg___closed__1;
lean_object* l_RBNode_find___main___at_Lean_getExternAttrData___spec__2(lean_object*, lean_object*);
uint8_t lean_nat_dec_le(lean_object*, lean_object*);
@ -266,7 +266,7 @@ x_5 = lean_nat_dec_eq(x_2, x_4);
if (x_5 == 0)
{
lean_object* x_6; lean_object* x_7;
x_6 = l_Lean_stxInh;
x_6 = l_Lean_Syntax_inhabited;
x_7 = lean_array_get(x_6, x_1, x_2);
if (lean_obj_tag(x_7) == 3)
{
@ -596,7 +596,7 @@ x_6 = lean_nat_dec_eq(x_4, x_5);
if (x_6 == 0)
{
lean_object* x_7; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39;
x_36 = l_Lean_stxInh;
x_36 = l_Lean_Syntax_inhabited;
x_37 = lean_array_get(x_36, x_3, x_5);
x_38 = l_Lean_numLitKind;
x_39 = l_Lean_Syntax_isNatLitAux(x_38, x_37);
@ -628,7 +628,7 @@ lean_inc(x_8);
x_9 = lean_ctor_get(x_7, 1);
lean_inc(x_9);
lean_dec(x_7);
x_10 = l_Lean_stxInh;
x_10 = l_Lean_Syntax_inhabited;
x_11 = lean_array_get(x_10, x_3, x_9);
x_12 = l_Lean_Syntax_isStrLit_x3f(x_11);
lean_dec(x_11);

View file

@ -29,7 +29,6 @@ uint8_t l_Lean_Name_quickLt(lean_object*, lean_object*);
lean_object* l_Lean_Name_isInternal___boxed(lean_object*);
lean_object* l_Lean_NameSet_HasEmptyc;
lean_object* l_Lean_Name_isPrefixOf___main___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Name_HasBeq;
uint8_t l_Lean_Name_DecidableRel(lean_object*, lean_object*);
lean_object* l_Lean_Name_quickLt___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Name_getNumParts___main___boxed(lean_object*);
@ -103,7 +102,6 @@ lean_object* l_RBNode_find___main___at_Lean_NameMap_find___spec__1(lean_object*)
lean_object* l_Lean_Name_getPrefix___boxed(lean_object*);
lean_object* l_Lean_Name_append(lean_object*, lean_object*);
lean_object* l_Lean_Name_components_x27___main(lean_object*);
lean_object* l_Lean_Name_beq___boxed(lean_object*, lean_object*);
uint8_t l_Lean_Name_isAnonymous(lean_object*);
lean_object* l_RBNode_ins___main___at_Lean_NameSet_insert___spec__2(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_NameSet_Inhabited;
@ -112,7 +110,6 @@ lean_object* l_Lean_Name_replacePrefix___boxed(lean_object*, lean_object*, lean_
lean_object* l_List_foldl___main___at_String_toName___spec__1(lean_object*, lean_object*);
lean_object* l_Lean_Name_getPrefix(lean_object*);
lean_object* l_RBNode_setBlack___rarg(lean_object*);
lean_object* l_Lean_Name_HasBeq___closed__1;
lean_object* l_Lean_Name_append___main___boxed(lean_object*, lean_object*);
lean_object* l_String_trim(lean_object*);
uint8_t l_Lean_NameSet_contains(lean_object*, lean_object*);
@ -314,33 +311,6 @@ x_3 = l_List_reverse___rarg(x_2);
return x_3;
}
}
lean_object* l_Lean_Name_beq___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
uint8_t x_3; lean_object* x_4;
x_3 = lean_name_eq(x_1, x_2);
lean_dec(x_2);
lean_dec(x_1);
x_4 = lean_box(x_3);
return x_4;
}
}
lean_object* _init_l_Lean_Name_HasBeq___closed__1() {
_start:
{
lean_object* x_1;
x_1 = lean_alloc_closure((void*)(l_Lean_Name_beq___boxed), 2, 0);
return x_1;
}
}
lean_object* _init_l_Lean_Name_HasBeq() {
_start:
{
lean_object* x_1;
x_1 = l_Lean_Name_HasBeq___closed__1;
return x_1;
}
}
uint8_t l_Lean_Name_eqStr(lean_object* x_1, lean_object* x_2) {
_start:
{
@ -8997,10 +8967,6 @@ l_Lean_stringToName___closed__1 = _init_l_Lean_stringToName___closed__1();
lean_mark_persistent(l_Lean_stringToName___closed__1);
l_Lean_stringToName = _init_l_Lean_stringToName();
lean_mark_persistent(l_Lean_stringToName);
l_Lean_Name_HasBeq___closed__1 = _init_l_Lean_Name_HasBeq___closed__1();
lean_mark_persistent(l_Lean_Name_HasBeq___closed__1);
l_Lean_Name_HasBeq = _init_l_Lean_Name_HasBeq();
lean_mark_persistent(l_Lean_Name_HasBeq);
l_Lean_Name_HasAppend___closed__1 = _init_l_Lean_Name_HasAppend___closed__1();
lean_mark_persistent(l_Lean_Name_HasAppend___closed__1);
l_Lean_Name_HasAppend = _init_l_Lean_Name_HasAppend();

View file

@ -246,7 +246,6 @@ lean_object* l_Lean_Elab_Term_elabSubtype___lambda__1___closed__11;
lean_object* l_Lean_Elab_Term_elabAnoymousCtor___closed__2;
extern lean_object* l_Lean_Expr_heq_x3f___closed__2;
lean_object* l_Lean_Elab_Term_elabDiv___closed__2;
lean_object* l_Lean_Elab_Term_elabTerm(lean_object*, lean_object*, uint8_t, uint8_t, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabWhere___lambda__1(lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Parser_Term_sub___elambda__1___closed__1;
lean_object* l_Lean_Elab_Term_elabDollarProj(lean_object*, lean_object*, lean_object*, lean_object*);
@ -277,6 +276,7 @@ extern lean_object* l___private_Init_Lean_Elab_Quotation_4__quoteOption___rarg__
lean_object* l___regBuiltinTermElab_Lean_Elab_Term_elabDiv___closed__3;
lean_object* l___regBuiltinTermElab_Lean_Elab_Term_elabBNe___closed__3;
lean_object* l_Lean_Elab_Term_elabProd___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabTermAux___main(lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Parser_Term_mod___elambda__1___closed__1;
extern lean_object* l___private_Init_Lean_Elab_Quotation_13__letBindRhss___main___closed__15;
lean_object* l_Lean_Elab_Term_elabMapRev___closed__1;
@ -2537,7 +2537,7 @@ lean_ctor_set(x_60, 0, x_1);
lean_ctor_set(x_60, 1, x_59);
lean_ctor_set(x_3, 8, x_60);
x_61 = 1;
x_62 = l_Lean_Elab_Term_elabTerm(x_57, x_2, x_61, x_61, x_3, x_26);
x_62 = l_Lean_Elab_Term_elabTermAux___main(x_2, x_61, x_61, x_57, x_3, x_26);
return x_62;
}
else
@ -2581,7 +2581,7 @@ lean_ctor_set(x_75, 8, x_74);
lean_ctor_set(x_75, 9, x_72);
lean_ctor_set_uint8(x_75, sizeof(void*)*10, x_73);
x_76 = 1;
x_77 = l_Lean_Elab_Term_elabTerm(x_57, x_2, x_76, x_76, x_75, x_26);
x_77 = l_Lean_Elab_Term_elabTermAux___main(x_2, x_76, x_76, x_57, x_75, x_26);
return x_77;
}
}
@ -5294,7 +5294,7 @@ x_12 = lean_array_push(x_11, x_9);
x_13 = l_Array_iterateMAux___main___at_Lean_mkAppStx___spec__1(x_12, x_12, x_6, x_1);
lean_dec(x_12);
x_14 = 1;
x_15 = l_Lean_Elab_Term_elabTerm(x_13, x_3, x_14, x_14, x_4, x_5);
x_15 = l_Lean_Elab_Term_elabTermAux___main(x_3, x_14, x_14, x_13, x_4, x_5);
return x_15;
}
}

File diff suppressed because it is too large Load diff

View file

@ -15,6 +15,7 @@ extern "C" {
#endif
lean_object* l_Lean_Elab_Term_mkForall(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_extractMacroScopes(lean_object*);
lean_object* l_Lean_registerTraceClass(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_addDecl(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_instantiateMVars(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_unreachable_x21___rarg(lean_object*);
@ -24,11 +25,13 @@ lean_object* l_Array_iterateMAux___main___at_Lean_Elab_Command_collectUsedFVarsA
lean_object* l_Array_iterateMAux___main___at_Lean_Elab_Command_elabDefLike___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_modifyScope___at_Lean_Elab_Command_elabDefLike___spec__2(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_elabDefLike___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_mkDef___lambda__1___closed__4;
lean_object* l_Lean_Syntax_getIdAt(lean_object*, lean_object*);
lean_object* l___private_Init_Data_Array_Basic_3__iterateRevMAux___main___at_Lean_Elab_Command_removeUnused___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Elab_Command_runTermElabM___rarg___closed__1;
lean_object* lean_local_ctx_erase(lean_object*, lean_object*);
extern lean_object* l_Array_empty___closed__1;
uint8_t l_Lean_checkTraceOption(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_elabDefVal___closed__2;
uint8_t lean_name_eq(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_compileDecl(lean_object*, lean_object*, lean_object*, lean_object*);
@ -43,9 +46,11 @@ lean_object* l___private_Init_Lean_Elab_Term_20__synthesizeSyntheticMVarsAux___m
lean_object* l_Lean_Elab_Command_collectUsedFVarsAtFVars___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
uint8_t l_Lean_Elab_Command_DefKind_isExample(uint8_t);
lean_object* l_Lean_Name_getNumParts___main(lean_object*);
extern lean_object* l___private_Init_Lean_Elab_Util_8__regTraceClasses___closed__2;
lean_object* lean_nat_add(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_ensureHasType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_mkFreshTypeMVar(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_getOptions(lean_object*, lean_object*);
lean_object* l___private_Init_Data_Array_Basic_3__iterateRevMAux___main___at_Lean_Elab_Command_removeUnused___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_mkDeclName(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_collectUsedFVarsAtFVars(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@ -60,12 +65,13 @@ lean_object* lean_nat_sub(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_throwUnsupportedSyntax___rarg(lean_object*);
lean_object* l_Lean_Elab_Command_DefKind_isTheorem___boxed(lean_object*);
extern lean_object* l___private_Init_Lean_Elab_Term_14__resumePostponed___lambda__1___closed__1;
lean_object* l_Lean_Elab_Term_elabTerm(lean_object*, lean_object*, uint8_t, uint8_t, lean_object*, lean_object*);
extern lean_object* l_Lean_Parser_Command_declValSimple___elambda__1___closed__2;
lean_object* l_Lean_Expr_fvarId_x21(lean_object*);
lean_object* l___private_Init_Lean_Elab_Command_11__getVarDecls(lean_object*);
lean_object* l_Lean_Elab_Command_mkDef___lambda__1___closed__2;
lean_object* l_Lean_Elab_Command_mkDef___lambda__1___closed__1;
lean_object* l_Lean_Elab_Term_elabTermAux___main(lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_logTrace(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Syntax_getId(lean_object*);
lean_object* l_Lean_Elab_Command_modifyScope___at_Lean_Elab_Command_elabDefLike___spec__4(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_mkDef___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*);
@ -74,6 +80,7 @@ lean_object* l_Lean_Elab_Command_withUsedWhen(lean_object*);
lean_object* l_Lean_Elab_Term_throwError___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Elab_Term_elabTypeStx___rarg___closed__1;
lean_object* l_Lean_Elab_Command_collectUsedFVars(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Elab_Definition_1__regTraceClasses(lean_object*);
lean_object* l_Lean_Elab_Command_withUsedWhen___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Parser_Command_namespace___elambda__1___closed__1;
lean_object* l_Lean_Elab_Command_throwError___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
@ -99,7 +106,10 @@ lean_object* l_Lean_Elab_Term_getLCtx(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_removeUnused___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Syntax_getArgs(lean_object*);
lean_object* l_Lean_Syntax_getKind(lean_object*);
lean_object* l_Lean_Elab_Command_mkDef___lambda__1___closed__3;
lean_object* l_Lean_Elab_Command_mkDef___lambda__1___closed__6;
lean_object* l_Lean_Elab_Term_elabType(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_mkDef___lambda__1___closed__5;
uint8_t l_Lean_Syntax_isNone(lean_object*);
lean_object* l_Lean_Elab_Command_mkDef(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Array_forMAux___main___at_Lean_Elab_Command_applyAttributes___spec__1(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
@ -1347,6 +1357,42 @@ lean_ctor_set_uint32(x_2, 0, x_1);
return x_2;
}
}
lean_object* _init_l_Lean_Elab_Command_mkDef___lambda__1___closed__3() {
_start:
{
lean_object* x_1;
x_1 = lean_mk_string("definition");
return x_1;
}
}
lean_object* _init_l_Lean_Elab_Command_mkDef___lambda__1___closed__4() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l___private_Init_Lean_Elab_Util_8__regTraceClasses___closed__2;
x_2 = l_Lean_Elab_Command_mkDef___lambda__1___closed__3;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Elab_Command_mkDef___lambda__1___closed__5() {
_start:
{
lean_object* x_1;
x_1 = lean_mk_string("body");
return x_1;
}
}
lean_object* _init_l_Lean_Elab_Command_mkDef___lambda__1___closed__6() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Elab_Command_mkDef___lambda__1___closed__4;
x_2 = l_Lean_Elab_Command_mkDef___lambda__1___closed__5;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
lean_object* l_Lean_Elab_Command_mkDef___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, uint8_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
_start:
{
@ -1387,7 +1433,7 @@ lean_inc(x_11);
x_22 = l_Lean_Elab_Term_mkLambda(x_1, x_10, x_20, x_11, x_21);
if (lean_obj_tag(x_22) == 0)
{
lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; uint8_t x_35;
lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; uint8_t x_73;
x_23 = lean_ctor_get(x_22, 0);
lean_inc(x_23);
x_24 = lean_ctor_get(x_22, 1);
@ -1416,312 +1462,265 @@ lean_inc(x_33);
lean_dec(x_31);
lean_inc(x_11);
x_34 = l_Lean_Elab_Term_instantiateMVars(x_5, x_29, x_11, x_33);
x_35 = !lean_is_exclusive(x_34);
if (x_35 == 0)
{
lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42;
x_36 = lean_ctor_get(x_34, 0);
x_37 = lean_ctor_get(x_34, 1);
x_38 = l_Lean_Elab_Command_mkDef___lambda__1___closed__1;
lean_inc(x_32);
x_39 = l_Lean_CollectLevelParams_main___main(x_32, x_38);
x_35 = lean_ctor_get(x_34, 0);
lean_inc(x_35);
x_36 = lean_ctor_get(x_34, 1);
lean_inc(x_36);
x_40 = l_Lean_CollectLevelParams_main___main(x_36, x_39);
x_41 = lean_ctor_get(x_40, 2);
lean_inc(x_41);
lean_dec(x_40);
x_42 = l_Lean_Elab_Command_sortDeclLevelParams(x_6, x_41);
if (lean_is_exclusive(x_34)) {
lean_ctor_release(x_34, 0);
lean_ctor_release(x_34, 1);
x_37 = x_34;
} else {
lean_dec_ref(x_34);
x_37 = lean_box(0);
}
x_69 = l_Lean_Elab_Term_getOptions(x_11, x_36);
x_70 = lean_ctor_get(x_69, 0);
lean_inc(x_70);
x_71 = lean_ctor_get(x_69, 1);
lean_inc(x_71);
lean_dec(x_69);
x_72 = l_Lean_Elab_Command_mkDef___lambda__1___closed__6;
x_73 = l_Lean_checkTraceOption(x_70, x_72);
lean_dec(x_70);
if (x_73 == 0)
{
x_38 = x_71;
goto block_68;
}
else
{
lean_object* x_74; lean_object* x_75; lean_object* x_76;
lean_inc(x_35);
x_74 = lean_alloc_ctor(2, 1, 0);
lean_ctor_set(x_74, 0, x_35);
x_75 = l_Lean_Elab_Term_logTrace(x_72, x_1, x_74, x_11, x_71);
x_76 = lean_ctor_get(x_75, 1);
lean_inc(x_76);
lean_dec(x_75);
x_38 = x_76;
goto block_68;
}
block_68:
{
lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43;
x_39 = l_Lean_Elab_Command_mkDef___lambda__1___closed__1;
lean_inc(x_32);
x_40 = l_Lean_CollectLevelParams_main___main(x_32, x_39);
lean_inc(x_35);
x_41 = l_Lean_CollectLevelParams_main___main(x_35, x_40);
x_42 = lean_ctor_get(x_41, 2);
lean_inc(x_42);
lean_dec(x_41);
x_43 = l_Lean_Elab_Command_sortDeclLevelParams(x_6, x_42);
switch (x_7) {
case 0:
{
lean_object* x_43; lean_object* x_44; uint8_t x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49;
lean_object* x_44; lean_object* x_45; uint8_t x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51;
lean_dec(x_11);
x_43 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_43, 0, x_8);
lean_ctor_set(x_43, 1, x_42);
lean_ctor_set(x_43, 2, x_32);
x_44 = lean_ctor_get(x_9, 1);
x_45 = lean_ctor_get_uint8(x_44, sizeof(void*)*2 + 3);
x_46 = l_Lean_Elab_Command_mkDef___lambda__1___closed__2;
x_47 = lean_alloc_ctor(0, 3, 1);
lean_ctor_set(x_47, 0, x_43);
lean_ctor_set(x_47, 1, x_36);
lean_ctor_set(x_47, 2, x_46);
lean_ctor_set_uint8(x_47, sizeof(void*)*3, x_45);
x_48 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_48, 0, x_47);
x_44 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_44, 0, x_8);
lean_ctor_set(x_44, 1, x_43);
lean_ctor_set(x_44, 2, x_32);
x_45 = lean_ctor_get(x_9, 1);
x_46 = lean_ctor_get_uint8(x_45, sizeof(void*)*2 + 3);
x_47 = l_Lean_Elab_Command_mkDef___lambda__1___closed__2;
x_48 = lean_alloc_ctor(0, 3, 1);
lean_ctor_set(x_48, 0, x_44);
lean_ctor_set(x_48, 1, x_35);
lean_ctor_set(x_48, 2, x_47);
lean_ctor_set_uint8(x_48, sizeof(void*)*3, x_46);
x_49 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_49, 0, x_48);
lean_ctor_set(x_34, 0, x_49);
return x_34;
x_50 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_50, 0, x_49);
if (lean_is_scalar(x_37)) {
x_51 = lean_alloc_ctor(0, 2, 0);
} else {
x_51 = x_37;
}
lean_ctor_set(x_51, 0, x_50);
lean_ctor_set(x_51, 1, x_38);
return x_51;
}
case 1:
{
lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54;
lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57;
lean_dec(x_11);
x_50 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_50, 0, x_8);
lean_ctor_set(x_50, 1, x_42);
lean_ctor_set(x_50, 2, x_32);
x_51 = lean_task_pure(x_36);
x_52 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_52, 0, x_50);
lean_ctor_set(x_52, 1, x_51);
x_53 = lean_alloc_ctor(2, 1, 0);
lean_ctor_set(x_53, 0, x_52);
x_54 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_54, 0, x_53);
lean_ctor_set(x_34, 0, x_54);
return x_34;
x_52 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_52, 0, x_8);
lean_ctor_set(x_52, 1, x_43);
lean_ctor_set(x_52, 2, x_32);
x_53 = lean_task_pure(x_35);
x_54 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_54, 0, x_52);
lean_ctor_set(x_54, 1, x_53);
x_55 = lean_alloc_ctor(2, 1, 0);
lean_ctor_set(x_55, 0, x_54);
x_56 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_56, 0, x_55);
if (lean_is_scalar(x_37)) {
x_57 = lean_alloc_ctor(0, 2, 0);
} else {
x_57 = x_37;
}
case 2:
{
lean_object* x_55; lean_object* x_56; lean_object* x_57;
lean_dec(x_42);
lean_free_object(x_34);
lean_dec(x_36);
lean_dec(x_32);
lean_dec(x_8);
x_55 = l___private_Init_Lean_Elab_Term_14__resumePostponed___lambda__1___closed__1;
x_56 = l_unreachable_x21___rarg(x_55);
x_57 = lean_apply_2(x_56, x_11, x_37);
lean_ctor_set(x_57, 0, x_56);
lean_ctor_set(x_57, 1, x_38);
return x_57;
}
default:
{
lean_object* x_58; lean_object* x_59; uint8_t x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63;
lean_dec(x_11);
x_58 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_58, 0, x_8);
lean_ctor_set(x_58, 1, x_42);
lean_ctor_set(x_58, 2, x_32);
x_59 = lean_ctor_get(x_9, 1);
x_60 = lean_ctor_get_uint8(x_59, sizeof(void*)*2 + 3);
x_61 = lean_alloc_ctor(0, 2, 1);
lean_ctor_set(x_61, 0, x_58);
lean_ctor_set(x_61, 1, x_36);
lean_ctor_set_uint8(x_61, sizeof(void*)*2, x_60);
x_62 = lean_alloc_ctor(3, 1, 0);
lean_ctor_set(x_62, 0, x_61);
x_63 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_63, 0, x_62);
lean_ctor_set(x_34, 0, x_63);
return x_34;
}
}
}
else
{
lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70;
x_64 = lean_ctor_get(x_34, 0);
x_65 = lean_ctor_get(x_34, 1);
lean_inc(x_65);
lean_inc(x_64);
lean_dec(x_34);
x_66 = l_Lean_Elab_Command_mkDef___lambda__1___closed__1;
lean_inc(x_32);
x_67 = l_Lean_CollectLevelParams_main___main(x_32, x_66);
lean_inc(x_64);
x_68 = l_Lean_CollectLevelParams_main___main(x_64, x_67);
x_69 = lean_ctor_get(x_68, 2);
lean_inc(x_69);
lean_dec(x_68);
x_70 = l_Lean_Elab_Command_sortDeclLevelParams(x_6, x_69);
switch (x_7) {
case 0:
{
lean_object* x_71; lean_object* x_72; uint8_t x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78;
lean_dec(x_11);
x_71 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_71, 0, x_8);
lean_ctor_set(x_71, 1, x_70);
lean_ctor_set(x_71, 2, x_32);
x_72 = lean_ctor_get(x_9, 1);
x_73 = lean_ctor_get_uint8(x_72, sizeof(void*)*2 + 3);
x_74 = l_Lean_Elab_Command_mkDef___lambda__1___closed__2;
x_75 = lean_alloc_ctor(0, 3, 1);
lean_ctor_set(x_75, 0, x_71);
lean_ctor_set(x_75, 1, x_64);
lean_ctor_set(x_75, 2, x_74);
lean_ctor_set_uint8(x_75, sizeof(void*)*3, x_73);
x_76 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_76, 0, x_75);
x_77 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_77, 0, x_76);
x_78 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_78, 0, x_77);
lean_ctor_set(x_78, 1, x_65);
return x_78;
}
case 1:
{
lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84;
lean_dec(x_11);
x_79 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_79, 0, x_8);
lean_ctor_set(x_79, 1, x_70);
lean_ctor_set(x_79, 2, x_32);
x_80 = lean_task_pure(x_64);
x_81 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_81, 0, x_79);
lean_ctor_set(x_81, 1, x_80);
x_82 = lean_alloc_ctor(2, 1, 0);
lean_ctor_set(x_82, 0, x_81);
x_83 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_83, 0, x_82);
x_84 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_84, 0, x_83);
lean_ctor_set(x_84, 1, x_65);
return x_84;
}
case 2:
{
lean_object* x_85; lean_object* x_86; lean_object* x_87;
lean_dec(x_70);
lean_dec(x_64);
lean_object* x_58; lean_object* x_59; lean_object* x_60;
lean_dec(x_43);
lean_dec(x_37);
lean_dec(x_35);
lean_dec(x_32);
lean_dec(x_8);
x_85 = l___private_Init_Lean_Elab_Term_14__resumePostponed___lambda__1___closed__1;
x_86 = l_unreachable_x21___rarg(x_85);
x_87 = lean_apply_2(x_86, x_11, x_65);
return x_87;
x_58 = l___private_Init_Lean_Elab_Term_14__resumePostponed___lambda__1___closed__1;
x_59 = l_unreachable_x21___rarg(x_58);
x_60 = lean_apply_2(x_59, x_11, x_38);
return x_60;
}
default:
{
lean_object* x_88; lean_object* x_89; uint8_t x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94;
lean_object* x_61; lean_object* x_62; uint8_t x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67;
lean_dec(x_11);
x_88 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_88, 0, x_8);
lean_ctor_set(x_88, 1, x_70);
lean_ctor_set(x_88, 2, x_32);
x_89 = lean_ctor_get(x_9, 1);
x_90 = lean_ctor_get_uint8(x_89, sizeof(void*)*2 + 3);
x_91 = lean_alloc_ctor(0, 2, 1);
lean_ctor_set(x_91, 0, x_88);
lean_ctor_set(x_91, 1, x_64);
lean_ctor_set_uint8(x_91, sizeof(void*)*2, x_90);
x_92 = lean_alloc_ctor(3, 1, 0);
lean_ctor_set(x_92, 0, x_91);
x_93 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_93, 0, x_92);
x_94 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_94, 0, x_93);
lean_ctor_set(x_94, 1, x_65);
return x_94;
x_61 = lean_alloc_ctor(0, 3, 0);
lean_ctor_set(x_61, 0, x_8);
lean_ctor_set(x_61, 1, x_43);
lean_ctor_set(x_61, 2, x_32);
x_62 = lean_ctor_get(x_9, 1);
x_63 = lean_ctor_get_uint8(x_62, sizeof(void*)*2 + 3);
x_64 = lean_alloc_ctor(0, 2, 1);
lean_ctor_set(x_64, 0, x_61);
lean_ctor_set(x_64, 1, x_35);
lean_ctor_set_uint8(x_64, sizeof(void*)*2, x_63);
x_65 = lean_alloc_ctor(3, 1, 0);
lean_ctor_set(x_65, 0, x_64);
x_66 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_66, 0, x_65);
if (lean_is_scalar(x_37)) {
x_67 = lean_alloc_ctor(0, 2, 0);
} else {
x_67 = x_37;
}
lean_ctor_set(x_67, 0, x_66);
lean_ctor_set(x_67, 1, x_38);
return x_67;
}
}
}
}
else
{
uint8_t x_95;
uint8_t x_77;
lean_dec(x_17);
lean_dec(x_11);
lean_dec(x_8);
lean_dec(x_6);
x_95 = !lean_is_exclusive(x_22);
if (x_95 == 0)
x_77 = !lean_is_exclusive(x_22);
if (x_77 == 0)
{
return x_22;
}
else
{
lean_object* x_96; lean_object* x_97; lean_object* x_98;
x_96 = lean_ctor_get(x_22, 0);
x_97 = lean_ctor_get(x_22, 1);
lean_inc(x_97);
lean_inc(x_96);
lean_object* x_78; lean_object* x_79; lean_object* x_80;
x_78 = lean_ctor_get(x_22, 0);
x_79 = lean_ctor_get(x_22, 1);
lean_inc(x_79);
lean_inc(x_78);
lean_dec(x_22);
x_98 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_98, 0, x_96);
lean_ctor_set(x_98, 1, x_97);
return x_98;
x_80 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_80, 0, x_78);
lean_ctor_set(x_80, 1, x_79);
return x_80;
}
}
}
else
{
uint8_t x_99;
uint8_t x_81;
lean_dec(x_17);
lean_dec(x_11);
lean_dec(x_10);
lean_dec(x_8);
lean_dec(x_6);
x_99 = !lean_is_exclusive(x_19);
if (x_99 == 0)
x_81 = !lean_is_exclusive(x_19);
if (x_81 == 0)
{
return x_19;
}
else
{
lean_object* x_100; lean_object* x_101; lean_object* x_102;
x_100 = lean_ctor_get(x_19, 0);
x_101 = lean_ctor_get(x_19, 1);
lean_inc(x_101);
lean_inc(x_100);
lean_object* x_82; lean_object* x_83; lean_object* x_84;
x_82 = lean_ctor_get(x_19, 0);
x_83 = lean_ctor_get(x_19, 1);
lean_inc(x_83);
lean_inc(x_82);
lean_dec(x_19);
x_102 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_102, 0, x_100);
lean_ctor_set(x_102, 1, x_101);
return x_102;
x_84 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_84, 0, x_82);
lean_ctor_set(x_84, 1, x_83);
return x_84;
}
}
}
else
{
uint8_t x_103;
uint8_t x_85;
lean_dec(x_11);
lean_dec(x_10);
lean_dec(x_8);
lean_dec(x_6);
lean_dec(x_4);
lean_dec(x_2);
x_103 = !lean_is_exclusive(x_16);
if (x_103 == 0)
x_85 = !lean_is_exclusive(x_16);
if (x_85 == 0)
{
return x_16;
}
else
{
lean_object* x_104; lean_object* x_105; lean_object* x_106;
x_104 = lean_ctor_get(x_16, 0);
x_105 = lean_ctor_get(x_16, 1);
lean_inc(x_105);
lean_inc(x_104);
lean_object* x_86; lean_object* x_87; lean_object* x_88;
x_86 = lean_ctor_get(x_16, 0);
x_87 = lean_ctor_get(x_16, 1);
lean_inc(x_87);
lean_inc(x_86);
lean_dec(x_16);
x_106 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_106, 0, x_104);
lean_ctor_set(x_106, 1, x_105);
return x_106;
x_88 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_88, 0, x_86);
lean_ctor_set(x_88, 1, x_87);
return x_88;
}
}
}
else
{
uint8_t x_107;
uint8_t x_89;
lean_dec(x_11);
lean_dec(x_10);
lean_dec(x_8);
lean_dec(x_6);
lean_dec(x_4);
lean_dec(x_2);
x_107 = !lean_is_exclusive(x_13);
if (x_107 == 0)
x_89 = !lean_is_exclusive(x_13);
if (x_89 == 0)
{
return x_13;
}
else
{
lean_object* x_108; lean_object* x_109; lean_object* x_110;
x_108 = lean_ctor_get(x_13, 0);
x_109 = lean_ctor_get(x_13, 1);
lean_inc(x_109);
lean_inc(x_108);
lean_object* x_90; lean_object* x_91; lean_object* x_92;
x_90 = lean_ctor_get(x_13, 0);
x_91 = lean_ctor_get(x_13, 1);
lean_inc(x_91);
lean_inc(x_90);
lean_dec(x_13);
x_110 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_110, 0, x_108);
lean_ctor_set(x_110, 1, x_109);
return x_110;
x_92 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_92, 0, x_90);
lean_ctor_set(x_92, 1, x_91);
return x_92;
}
}
}
@ -2065,7 +2064,7 @@ lean_dec(x_1);
x_15 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_15, 0, x_2);
x_16 = 1;
x_17 = l_Lean_Elab_Term_elabTerm(x_14, x_15, x_16, x_16, x_3, x_4);
x_17 = l_Lean_Elab_Term_elabTermAux___main(x_15, x_16, x_16, x_14, x_3, x_4);
return x_17;
}
}
@ -5683,6 +5682,62 @@ lean_dec(x_2);
return x_10;
}
}
lean_object* l___private_Init_Lean_Elab_Definition_1__regTraceClasses(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3;
x_2 = l_Lean_Elab_Command_mkDef___lambda__1___closed__4;
x_3 = l_Lean_registerTraceClass(x_2, x_1);
if (lean_obj_tag(x_3) == 0)
{
uint8_t x_4;
x_4 = !lean_is_exclusive(x_3);
if (x_4 == 0)
{
lean_object* x_5; lean_object* x_6;
x_5 = lean_ctor_get(x_3, 0);
lean_dec(x_5);
x_6 = lean_box(0);
lean_ctor_set(x_3, 0, x_6);
return x_3;
}
else
{
lean_object* x_7; lean_object* x_8; lean_object* x_9;
x_7 = lean_ctor_get(x_3, 1);
lean_inc(x_7);
lean_dec(x_3);
x_8 = lean_box(0);
x_9 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_9, 0, x_8);
lean_ctor_set(x_9, 1, x_7);
return x_9;
}
}
else
{
uint8_t x_10;
x_10 = !lean_is_exclusive(x_3);
if (x_10 == 0)
{
return x_3;
}
else
{
lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_11 = lean_ctor_get(x_3, 0);
x_12 = lean_ctor_get(x_3, 1);
lean_inc(x_12);
lean_inc(x_11);
lean_dec(x_3);
x_13 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_13, 0, x_11);
lean_ctor_set(x_13, 1, x_12);
return x_13;
}
}
}
}
lean_object* initialize_Init_Lean_Util_CollectLevelParams(lean_object*);
lean_object* initialize_Init_Lean_Util_CollectFVars(lean_object*);
lean_object* initialize_Init_Lean_Elab_DeclModifiers(lean_object*);
@ -5710,12 +5765,23 @@ l_Lean_Elab_Command_mkDef___lambda__1___closed__1 = _init_l_Lean_Elab_Command_mk
lean_mark_persistent(l_Lean_Elab_Command_mkDef___lambda__1___closed__1);
l_Lean_Elab_Command_mkDef___lambda__1___closed__2 = _init_l_Lean_Elab_Command_mkDef___lambda__1___closed__2();
lean_mark_persistent(l_Lean_Elab_Command_mkDef___lambda__1___closed__2);
l_Lean_Elab_Command_mkDef___lambda__1___closed__3 = _init_l_Lean_Elab_Command_mkDef___lambda__1___closed__3();
lean_mark_persistent(l_Lean_Elab_Command_mkDef___lambda__1___closed__3);
l_Lean_Elab_Command_mkDef___lambda__1___closed__4 = _init_l_Lean_Elab_Command_mkDef___lambda__1___closed__4();
lean_mark_persistent(l_Lean_Elab_Command_mkDef___lambda__1___closed__4);
l_Lean_Elab_Command_mkDef___lambda__1___closed__5 = _init_l_Lean_Elab_Command_mkDef___lambda__1___closed__5();
lean_mark_persistent(l_Lean_Elab_Command_mkDef___lambda__1___closed__5);
l_Lean_Elab_Command_mkDef___lambda__1___closed__6 = _init_l_Lean_Elab_Command_mkDef___lambda__1___closed__6();
lean_mark_persistent(l_Lean_Elab_Command_mkDef___lambda__1___closed__6);
l_Lean_Elab_Command_elabDefVal___closed__1 = _init_l_Lean_Elab_Command_elabDefVal___closed__1();
lean_mark_persistent(l_Lean_Elab_Command_elabDefVal___closed__1);
l_Lean_Elab_Command_elabDefVal___closed__2 = _init_l_Lean_Elab_Command_elabDefVal___closed__2();
lean_mark_persistent(l_Lean_Elab_Command_elabDefVal___closed__2);
l_Lean_Elab_Command_elabDefVal___closed__3 = _init_l_Lean_Elab_Command_elabDefVal___closed__3();
lean_mark_persistent(l_Lean_Elab_Command_elabDefVal___closed__3);
res = l___private_Init_Lean_Elab_Definition_1__regTraceClasses(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

View file

@ -43,8 +43,8 @@ lean_object* l_Lean_Parser_parseCommand___main(lean_object*, lean_object*, lean_
lean_object* l_Lean_Elab_Frontend_processCommandsAux___boxed(lean_object*);
extern lean_object* l_PersistentArray_empty___closed__3;
lean_object* l_Lean_Elab_Frontend_elabCommandAtFrontend(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_elabCommand___main(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Frontend_updateCmdPos(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Command_elabCommand(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Frontend_processCommand(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Frontend_processCommandsAux___main(lean_object*);
lean_object* l_Lean_Elab_Frontend_liftIOCore_x21___rarg(lean_object*, lean_object*, lean_object*);
@ -376,7 +376,7 @@ lean_ctor_set(x_14, 4, x_6);
lean_ctor_set(x_14, 5, x_12);
lean_ctor_set(x_14, 6, x_13);
lean_inc(x_14);
x_15 = l_Lean_Elab_Command_elabCommand(x_1, x_14, x_7);
x_15 = l_Lean_Elab_Command_elabCommand___main(x_1, x_14, x_7);
if (lean_obj_tag(x_15) == 0)
{
uint8_t x_16;
@ -683,7 +683,7 @@ lean_ctor_set(x_90, 4, x_82);
lean_ctor_set(x_90, 5, x_88);
lean_ctor_set(x_90, 6, x_89);
lean_inc(x_90);
x_91 = l_Lean_Elab_Command_elabCommand(x_1, x_90, x_83);
x_91 = l_Lean_Elab_Command_elabCommand___main(x_1, x_90, x_83);
if (lean_obj_tag(x_91) == 0)
{
uint8_t x_92;

View file

@ -18,7 +18,6 @@ lean_object* l_Lean_Parser_parseHeader(lean_object*, lean_object*);
lean_object* lean_io_error_to_string(lean_object*);
lean_object* l_List_map___main___at_Lean_Elab_headerToImports___spec__1(lean_object*);
lean_object* l_Lean_Syntax_getIdAt(lean_object*, lean_object*);
extern lean_object* l_Lean_stxInh;
lean_object* l_List_append___rarg(lean_object*, lean_object*);
lean_object* l_Lean_Elab_headerToImports___closed__2;
lean_object* l_Lean_Elab_headerToImports(lean_object*);
@ -41,6 +40,7 @@ lean_object* l_Lean_FileMap_toPosition(lean_object*, lean_object*);
lean_object* l_Lean_FileMap_ofString(lean_object*);
lean_object* lean_mk_empty_environment(uint32_t, lean_object*);
lean_object* lean_import_modules(lean_object*, uint32_t, lean_object*);
extern lean_object* l_Lean_Syntax_inhabited;
extern lean_object* l_Lean_normalizeModuleName___closed__1;
lean_object* l_Lean_Syntax_getArgs(lean_object*);
lean_object* lean_parse_imports(lean_object*, lean_object*, lean_object*);
@ -200,7 +200,7 @@ x_2 = l_Lean_Syntax_asNode(x_1);
x_3 = lean_ctor_get(x_2, 1);
lean_inc(x_3);
lean_dec(x_2);
x_4 = l_Lean_stxInh;
x_4 = l_Lean_Syntax_inhabited;
x_5 = lean_unsigned_to_nat(0u);
x_6 = lean_array_get(x_4, x_3, x_5);
x_7 = l_Lean_Syntax_isNone(x_6);

View file

@ -112,7 +112,6 @@ lean_object* l___private_Init_Lean_Elab_Quotation_8__getHeadInfo___lambda__4___b
lean_object* l___private_Init_Lean_Elab_Quotation_6__quoteSyntax___main___closed__1;
lean_object* l_Lean_Elab_Term_stxQuot_expand___closed__5;
lean_object* l_Lean_Elab_Term_stxQuot_expand___closed__3;
extern lean_object* l_Lean_stxInh;
lean_object* l_Array_umapMAux___main___at___private_Init_Lean_Elab_Quotation_8__getHeadInfo___spec__2___closed__2;
lean_object* l_Lean_Elab_Term_elabStxQuot___closed__1;
extern lean_object* l_PersistentHashMap_mkCollisionNode___rarg___closed__1;
@ -463,6 +462,7 @@ lean_object* l___private_Init_Lean_Elab_Quotation_10__compileStxMatch___main___c
lean_object* l___private_Init_Lean_Elab_Quotation_6__quoteSyntax___main___closed__14;
lean_object* l___private_Init_Lean_Elab_Quotation_6__quoteSyntax___main___closed__28;
extern lean_object* l_Lean_Parser_Term_str___elambda__1___closed__2;
extern lean_object* l_Lean_Syntax_inhabited;
lean_object* l___private_Init_Lean_Elab_Quotation_9__explodeHeadPat___lambda__1(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Elab_Quotation_6__quoteSyntax___main___closed__15;
lean_object* l_List_mapM___main___at___private_Init_Lean_Elab_Quotation_10__compileStxMatch___main___spec__8___closed__8;
@ -2273,7 +2273,7 @@ return x_8;
else
{
lean_object* x_9; lean_object* x_10; lean_object* x_11; uint8_t x_12;
x_9 = l_Lean_stxInh;
x_9 = l_Lean_Syntax_inhabited;
x_10 = lean_unsigned_to_nat(2u);
x_11 = lean_array_get(x_9, x_3, x_10);
x_12 = l_Lean_Syntax_isNone(x_11);
@ -6059,7 +6059,7 @@ _start:
if (lean_obj_tag(x_1) == 0)
{
lean_object* x_2; lean_object* x_3; lean_object* x_4;
x_2 = l_Lean_stxInh;
x_2 = l_Lean_Syntax_inhabited;
x_3 = l_List_head_x21___rarg___closed__2;
x_4 = lean_panic_fn(x_2, x_3);
return x_4;
@ -7546,7 +7546,7 @@ _start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_List_Monad;
x_2 = l_Lean_stxInh;
x_2 = l_Lean_Syntax_inhabited;
x_3 = l_monadInhabited___rarg(x_1, x_2);
return x_3;
}
@ -7556,7 +7556,7 @@ _start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_List_head_x21___at___private_Init_Lean_Elab_Quotation_10__compileStxMatch___main___spec__2___closed__1;
x_2 = l_Lean_stxInh;
x_2 = l_Lean_Syntax_inhabited;
x_3 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_3, 0, x_1);
lean_ctor_set(x_3, 1, x_2);
@ -12047,7 +12047,7 @@ return x_18;
else
{
lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; lean_object* x_24; uint8_t x_41;
x_19 = l_Lean_stxInh;
x_19 = l_Lean_Syntax_inhabited;
x_20 = lean_unsigned_to_nat(1u);
x_21 = lean_array_get(x_19, x_4, x_20);
x_22 = l_Lean_Parser_Term_paren___elambda__1___closed__1;
@ -15645,7 +15645,7 @@ _start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Name_inhabited;
x_2 = l_Lean_stxInh;
x_2 = l_Lean_Syntax_inhabited;
x_3 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_3, 0, x_1);
lean_ctor_set(x_3, 1, x_2);
@ -15967,7 +15967,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_197 = l_Lean_stxInh;
x_197 = l_Lean_Syntax_inhabited;
x_198 = lean_unsigned_to_nat(0u);
x_199 = lean_array_get(x_197, x_4, x_198);
x_200 = lean_unsigned_to_nat(2u);
@ -15995,7 +15995,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_207 = l_Lean_stxInh;
x_207 = l_Lean_Syntax_inhabited;
x_208 = lean_unsigned_to_nat(0u);
x_209 = lean_array_get(x_207, x_4, x_208);
x_210 = lean_unsigned_to_nat(2u);
@ -16023,7 +16023,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_217 = l_Lean_stxInh;
x_217 = l_Lean_Syntax_inhabited;
x_218 = lean_unsigned_to_nat(1u);
x_219 = lean_array_get(x_217, x_4, x_218);
lean_dec(x_4);
@ -16068,7 +16068,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_233 = l_Lean_stxInh;
x_233 = l_Lean_Syntax_inhabited;
x_234 = lean_unsigned_to_nat(2u);
x_235 = lean_array_get(x_233, x_4, x_234);
x_236 = lean_unsigned_to_nat(4u);
@ -16099,7 +16099,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_245 = l_Lean_stxInh;
x_245 = l_Lean_Syntax_inhabited;
x_246 = lean_unsigned_to_nat(0u);
x_247 = lean_array_get(x_245, x_4, x_246);
lean_inc(x_2);
@ -16202,7 +16202,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_269 = l_Lean_stxInh;
x_269 = l_Lean_Syntax_inhabited;
x_270 = lean_unsigned_to_nat(1u);
x_271 = lean_array_get(x_269, x_4, x_270);
lean_inc(x_271);
@ -16418,7 +16418,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_317 = l_Lean_stxInh;
x_317 = l_Lean_Syntax_inhabited;
x_318 = lean_unsigned_to_nat(1u);
x_319 = lean_array_get(x_317, x_4, x_318);
x_320 = l_Lean_Syntax_getArgs(x_319);
@ -17470,7 +17470,7 @@ lean_free_object(x_116);
lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
x_627 = l_Lean_stxInh;
x_627 = l_Lean_Syntax_inhabited;
x_628 = lean_unsigned_to_nat(0u);
x_629 = lean_array_get(x_627, x_4, x_628);
lean_dec(x_4);
@ -18189,7 +18189,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_821 = l_Lean_stxInh;
x_821 = l_Lean_Syntax_inhabited;
x_822 = lean_unsigned_to_nat(0u);
x_823 = lean_array_get(x_821, x_4, x_822);
x_824 = lean_unsigned_to_nat(2u);
@ -18216,7 +18216,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_831 = l_Lean_stxInh;
x_831 = l_Lean_Syntax_inhabited;
x_832 = lean_unsigned_to_nat(0u);
x_833 = lean_array_get(x_831, x_4, x_832);
x_834 = lean_unsigned_to_nat(2u);
@ -18243,7 +18243,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_841 = l_Lean_stxInh;
x_841 = l_Lean_Syntax_inhabited;
x_842 = lean_unsigned_to_nat(1u);
x_843 = lean_array_get(x_841, x_4, x_842);
lean_dec(x_4);
@ -18287,7 +18287,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_857 = l_Lean_stxInh;
x_857 = l_Lean_Syntax_inhabited;
x_858 = lean_unsigned_to_nat(2u);
x_859 = lean_array_get(x_857, x_4, x_858);
x_860 = lean_unsigned_to_nat(4u);
@ -18317,7 +18317,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_869 = l_Lean_stxInh;
x_869 = l_Lean_Syntax_inhabited;
x_870 = lean_unsigned_to_nat(0u);
x_871 = lean_array_get(x_869, x_4, x_870);
lean_inc(x_2);
@ -18421,7 +18421,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_891 = l_Lean_stxInh;
x_891 = l_Lean_Syntax_inhabited;
x_892 = lean_unsigned_to_nat(1u);
x_893 = lean_array_get(x_891, x_4, x_892);
lean_inc(x_893);
@ -18636,7 +18636,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_939 = l_Lean_stxInh;
x_939 = l_Lean_Syntax_inhabited;
x_940 = lean_unsigned_to_nat(1u);
x_941 = lean_array_get(x_939, x_4, x_940);
x_942 = l_Lean_Syntax_getArgs(x_941);
@ -19269,7 +19269,7 @@ lean_free_object(x_116);
lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
x_1132 = l_Lean_stxInh;
x_1132 = l_Lean_Syntax_inhabited;
x_1133 = lean_unsigned_to_nat(0u);
x_1134 = lean_array_get(x_1132, x_4, x_1133);
lean_dec(x_4);
@ -19964,7 +19964,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1294 = l_Lean_stxInh;
x_1294 = l_Lean_Syntax_inhabited;
x_1295 = lean_unsigned_to_nat(0u);
x_1296 = lean_array_get(x_1294, x_4, x_1295);
x_1297 = lean_unsigned_to_nat(2u);
@ -19991,7 +19991,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1304 = l_Lean_stxInh;
x_1304 = l_Lean_Syntax_inhabited;
x_1305 = lean_unsigned_to_nat(0u);
x_1306 = lean_array_get(x_1304, x_4, x_1305);
x_1307 = lean_unsigned_to_nat(2u);
@ -20018,7 +20018,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1314 = l_Lean_stxInh;
x_1314 = l_Lean_Syntax_inhabited;
x_1315 = lean_unsigned_to_nat(1u);
x_1316 = lean_array_get(x_1314, x_4, x_1315);
lean_dec(x_4);
@ -20062,7 +20062,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1330 = l_Lean_stxInh;
x_1330 = l_Lean_Syntax_inhabited;
x_1331 = lean_unsigned_to_nat(2u);
x_1332 = lean_array_get(x_1330, x_4, x_1331);
x_1333 = lean_unsigned_to_nat(4u);
@ -20092,7 +20092,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1342 = l_Lean_stxInh;
x_1342 = l_Lean_Syntax_inhabited;
x_1343 = lean_unsigned_to_nat(0u);
x_1344 = lean_array_get(x_1342, x_4, x_1343);
lean_inc(x_2);
@ -20196,7 +20196,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1364 = l_Lean_stxInh;
x_1364 = l_Lean_Syntax_inhabited;
x_1365 = lean_unsigned_to_nat(1u);
x_1366 = lean_array_get(x_1364, x_4, x_1365);
lean_inc(x_1366);
@ -20411,7 +20411,7 @@ lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1412 = l_Lean_stxInh;
x_1412 = l_Lean_Syntax_inhabited;
x_1413 = lean_unsigned_to_nat(1u);
x_1414 = lean_array_get(x_1412, x_4, x_1413);
x_1415 = l_Lean_Syntax_getArgs(x_1414);
@ -21044,7 +21044,7 @@ lean_dec(x_1225);
lean_free_object(x_115);
lean_free_object(x_105);
lean_dec(x_118);
x_1605 = l_Lean_stxInh;
x_1605 = l_Lean_Syntax_inhabited;
x_1606 = lean_unsigned_to_nat(0u);
x_1607 = lean_array_get(x_1605, x_4, x_1606);
lean_dec(x_4);
@ -21772,7 +21772,7 @@ lean_dec(x_1697);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1773 = l_Lean_stxInh;
x_1773 = l_Lean_Syntax_inhabited;
x_1774 = lean_unsigned_to_nat(0u);
x_1775 = lean_array_get(x_1773, x_4, x_1774);
x_1776 = lean_unsigned_to_nat(2u);
@ -21799,7 +21799,7 @@ lean_dec(x_1697);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1783 = l_Lean_stxInh;
x_1783 = l_Lean_Syntax_inhabited;
x_1784 = lean_unsigned_to_nat(0u);
x_1785 = lean_array_get(x_1783, x_4, x_1784);
x_1786 = lean_unsigned_to_nat(2u);
@ -21826,7 +21826,7 @@ lean_dec(x_1697);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1793 = l_Lean_stxInh;
x_1793 = l_Lean_Syntax_inhabited;
x_1794 = lean_unsigned_to_nat(1u);
x_1795 = lean_array_get(x_1793, x_4, x_1794);
lean_dec(x_4);
@ -21870,7 +21870,7 @@ lean_dec(x_1697);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1809 = l_Lean_stxInh;
x_1809 = l_Lean_Syntax_inhabited;
x_1810 = lean_unsigned_to_nat(2u);
x_1811 = lean_array_get(x_1809, x_4, x_1810);
x_1812 = lean_unsigned_to_nat(4u);
@ -21900,7 +21900,7 @@ lean_dec(x_1697);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1821 = l_Lean_stxInh;
x_1821 = l_Lean_Syntax_inhabited;
x_1822 = lean_unsigned_to_nat(0u);
x_1823 = lean_array_get(x_1821, x_4, x_1822);
lean_inc(x_2);
@ -22004,7 +22004,7 @@ lean_dec(x_1697);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1843 = l_Lean_stxInh;
x_1843 = l_Lean_Syntax_inhabited;
x_1844 = lean_unsigned_to_nat(1u);
x_1845 = lean_array_get(x_1843, x_4, x_1844);
lean_inc(x_1845);
@ -22219,7 +22219,7 @@ lean_dec(x_1697);
lean_free_object(x_105);
lean_dec(x_118);
lean_dec(x_1);
x_1891 = l_Lean_stxInh;
x_1891 = l_Lean_Syntax_inhabited;
x_1892 = lean_unsigned_to_nat(1u);
x_1893 = lean_array_get(x_1891, x_4, x_1892);
x_1894 = l_Lean_Syntax_getArgs(x_1893);
@ -22852,7 +22852,7 @@ lean_dec(x_1701);
lean_dec(x_1697);
lean_free_object(x_105);
lean_dec(x_118);
x_2084 = l_Lean_stxInh;
x_2084 = l_Lean_Syntax_inhabited;
x_2085 = lean_unsigned_to_nat(0u);
x_2086 = lean_array_get(x_2084, x_4, x_2085);
lean_dec(x_4);
@ -23612,7 +23612,7 @@ lean_dec(x_2180);
lean_dec(x_2177);
lean_dec(x_118);
lean_dec(x_1);
x_2259 = l_Lean_stxInh;
x_2259 = l_Lean_Syntax_inhabited;
x_2260 = lean_unsigned_to_nat(0u);
x_2261 = lean_array_get(x_2259, x_4, x_2260);
x_2262 = lean_unsigned_to_nat(2u);
@ -23639,7 +23639,7 @@ lean_dec(x_2180);
lean_dec(x_2177);
lean_dec(x_118);
lean_dec(x_1);
x_2269 = l_Lean_stxInh;
x_2269 = l_Lean_Syntax_inhabited;
x_2270 = lean_unsigned_to_nat(0u);
x_2271 = lean_array_get(x_2269, x_4, x_2270);
x_2272 = lean_unsigned_to_nat(2u);
@ -23666,7 +23666,7 @@ lean_dec(x_2180);
lean_dec(x_2177);
lean_dec(x_118);
lean_dec(x_1);
x_2279 = l_Lean_stxInh;
x_2279 = l_Lean_Syntax_inhabited;
x_2280 = lean_unsigned_to_nat(1u);
x_2281 = lean_array_get(x_2279, x_4, x_2280);
lean_dec(x_4);
@ -23710,7 +23710,7 @@ lean_dec(x_2180);
lean_dec(x_2177);
lean_dec(x_118);
lean_dec(x_1);
x_2295 = l_Lean_stxInh;
x_2295 = l_Lean_Syntax_inhabited;
x_2296 = lean_unsigned_to_nat(2u);
x_2297 = lean_array_get(x_2295, x_4, x_2296);
x_2298 = lean_unsigned_to_nat(4u);
@ -23740,7 +23740,7 @@ lean_dec(x_2180);
lean_dec(x_2177);
lean_dec(x_118);
lean_dec(x_1);
x_2307 = l_Lean_stxInh;
x_2307 = l_Lean_Syntax_inhabited;
x_2308 = lean_unsigned_to_nat(0u);
x_2309 = lean_array_get(x_2307, x_4, x_2308);
lean_inc(x_2);
@ -23844,7 +23844,7 @@ lean_dec(x_2180);
lean_dec(x_2177);
lean_dec(x_118);
lean_dec(x_1);
x_2329 = l_Lean_stxInh;
x_2329 = l_Lean_Syntax_inhabited;
x_2330 = lean_unsigned_to_nat(1u);
x_2331 = lean_array_get(x_2329, x_4, x_2330);
lean_inc(x_2331);
@ -24059,7 +24059,7 @@ lean_dec(x_2180);
lean_dec(x_2177);
lean_dec(x_118);
lean_dec(x_1);
x_2377 = l_Lean_stxInh;
x_2377 = l_Lean_Syntax_inhabited;
x_2378 = lean_unsigned_to_nat(1u);
x_2379 = lean_array_get(x_2377, x_4, x_2378);
x_2380 = l_Lean_Syntax_getArgs(x_2379);
@ -24692,7 +24692,7 @@ lean_dec(x_2184);
lean_dec(x_2180);
lean_dec(x_2177);
lean_dec(x_118);
x_2570 = l_Lean_stxInh;
x_2570 = l_Lean_Syntax_inhabited;
x_2571 = lean_unsigned_to_nat(0u);
x_2572 = lean_array_get(x_2570, x_4, x_2571);
lean_dec(x_4);
@ -25202,7 +25202,7 @@ lean_dec(x_11);
x_14 = l___private_Init_Lean_Elab_Quotation_14__exprPlaceholder;
lean_inc_n(x_6, 2);
x_15 = lean_local_ctx_mk_let_decl(x_12, x_6, x_6, x_14, x_9);
x_16 = l_Lean_stxInh;
x_16 = l_Lean_Syntax_inhabited;
x_17 = lean_unsigned_to_nat(3u);
x_18 = lean_array_get(x_16, x_4, x_17);
lean_dec(x_4);

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -36,7 +36,6 @@ lean_object* l_Lean_Elab_Term_instantiateMVars(lean_object*, lean_object*, lean_
lean_object* l_List_foldlM___main___at___private_Init_Lean_Elab_TermApp_14__elabAppFn___main___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_mkFreshExprMVar(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*);
lean_object* l_unreachable_x21___rarg(lean_object*);
extern lean_object* l___private_Init_Lean_Elab_Util_7__regTraceClasses___closed__2;
lean_object* l___private_Init_Data_Array_Basic_3__iterateRevMAux___main___at_Lean_Elab_Term_elabExplicitUniv___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_fieldIdxKind___closed__2;
extern lean_object* l_Lean_MessageData_ofList___closed__3;
@ -53,7 +52,6 @@ lean_object* l___regBuiltinTermElab_Lean_Elab_Term_elabId___closed__2;
lean_object* lean_array_fswap(lean_object*, lean_object*, lean_object*);
extern lean_object* l_Prod_HasRepr___rarg___closed__1;
lean_object* l___private_Init_Lean_Elab_TermApp_7__resolveLValAux___closed__7;
extern lean_object* l_Lean_stxInh;
lean_object* l___regBuiltinTermElab_Lean_Elab_Term_elabProj___closed__3;
extern lean_object* l_Array_empty___closed__1;
lean_object* lean_environment_find(lean_object*, lean_object*);
@ -95,6 +93,7 @@ lean_object* l___private_Init_Lean_Elab_TermApp_7__resolveLValAux___closed__14;
extern lean_object* l_Array_iterateMAux___main___at_Lean_mkAppStx___spec__1___closed__1;
lean_object* l___private_Init_Lean_Elab_TermApp_16__toMessageData___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_NamedArg_inhabited;
extern lean_object* l___private_Init_Lean_Elab_Util_8__regTraceClasses___closed__2;
lean_object* l___regBuiltinTermElab_Lean_Elab_Term_elabId___closed__3;
lean_object* l___private_Init_Lean_Elab_TermApp_17__mergeFailures(lean_object*);
lean_object* l___private_Init_Lean_Elab_TermApp_8__resolveLValLoop___main(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@ -143,7 +142,6 @@ lean_object* l___private_Init_Lean_Elab_TermApp_11__addLValArg___main___closed__
extern lean_object* l___private_Init_Lean_Elab_Term_14__resumePostponed___lambda__1___closed__1;
lean_object* l___private_Init_Lean_Elab_TermApp_7__resolveLValAux___closed__26;
lean_object* l___private_Init_Lean_Elab_TermApp_17__mergeFailures___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabTerm(lean_object*, lean_object*, uint8_t, uint8_t, lean_object*, lean_object*);
lean_object* l___regBuiltinTermElab_Lean_Elab_Term_elabChoice___closed__1;
lean_object* l_Lean_Elab_Term_addNamedArg___closed__3;
lean_object* lean_array_get(lean_object*, lean_object*, lean_object*);
@ -162,6 +160,7 @@ lean_object* l___private_Init_Lean_Elab_TermApp_11__addLValArg___main___closed__
lean_object* l_Lean_Elab_Term_Arg_hasToString(lean_object*);
lean_object* l_Array_forMAux___main___at___private_Init_Lean_Elab_TermApp_8__resolveLValLoop___main___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Elab_TermApp_14__elabAppFn(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabTermAux___main(lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*);
lean_object* l_Nat_repr(lean_object*);
uint8_t l_Lean_LocalDecl_binderInfo(lean_object*);
lean_object* l_Lean_Syntax_getId(lean_object*);
@ -222,6 +221,7 @@ extern lean_object* l_Lean_Meta_Exception_mkAppTypeMismatchMessage___closed__8;
lean_object* l___private_Init_Lean_Elab_TermApp_7__resolveLValAux___closed__8;
uint8_t l_Array_anyRangeMAux___main___at_Lean_Elab_Term_addNamedArg___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___regBuiltinTermElab_Lean_Elab_Term_elabId(lean_object*);
extern lean_object* l_Lean_Syntax_inhabited;
lean_object* l___private_Init_Lean_Elab_TermApp_4__elabAppArgsAux___main___closed__5;
lean_object* l___private_Init_Lean_Elab_TermApp_11__addLValArg___main___closed__5;
lean_object* l___regBuiltinTermElab_Lean_Elab_Term_elabSortApp___closed__2;
@ -911,7 +911,7 @@ x_8 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_8, 0, x_4);
x_9 = 1;
lean_inc(x_5);
x_10 = l_Lean_Elab_Term_elabTerm(x_7, x_8, x_9, x_9, x_5, x_6);
x_10 = l_Lean_Elab_Term_elabTermAux___main(x_8, x_9, x_9, x_7, x_5, x_6);
if (lean_obj_tag(x_10) == 0)
{
lean_object* x_11; lean_object* x_12; lean_object* x_13;
@ -6430,7 +6430,7 @@ lean_dec(x_206);
x_213 = lean_box(0);
x_214 = 1;
lean_inc(x_9);
x_215 = l_Lean_Elab_Term_elabTerm(x_2, x_213, x_214, x_214, x_9, x_10);
x_215 = l_Lean_Elab_Term_elabTermAux___main(x_213, x_214, x_214, x_2, x_9, x_10);
if (lean_obj_tag(x_215) == 0)
{
uint8_t x_216;
@ -6830,7 +6830,7 @@ lean_dec(x_302);
x_306 = lean_box(0);
x_307 = 1;
lean_inc(x_9);
x_308 = l_Lean_Elab_Term_elabTerm(x_2, x_306, x_307, x_307, x_9, x_10);
x_308 = l_Lean_Elab_Term_elabTermAux___main(x_306, x_307, x_307, x_2, x_9, x_10);
if (lean_obj_tag(x_308) == 0)
{
uint8_t x_309;
@ -7158,7 +7158,7 @@ lean_object* x_13; uint8_t x_14; lean_object* x_15;
x_13 = lean_box(0);
x_14 = 1;
lean_inc(x_9);
x_15 = l_Lean_Elab_Term_elabTerm(x_2, x_13, x_14, x_14, x_9, x_10);
x_15 = l_Lean_Elab_Term_elabTermAux___main(x_13, x_14, x_14, x_2, x_9, x_10);
if (lean_obj_tag(x_15) == 0)
{
uint8_t x_16;
@ -7470,7 +7470,7 @@ lean_dec(x_71);
x_75 = lean_box(0);
x_76 = 1;
lean_inc(x_9);
x_77 = l_Lean_Elab_Term_elabTerm(x_2, x_75, x_76, x_76, x_9, x_10);
x_77 = l_Lean_Elab_Term_elabTermAux___main(x_75, x_76, x_76, x_2, x_9, x_10);
if (lean_obj_tag(x_77) == 0)
{
uint8_t x_78;
@ -7784,7 +7784,7 @@ x_137 = l_Array_isEmpty___rarg(x_136);
if (x_137 == 0)
{
lean_object* x_138; lean_object* x_139; lean_object* x_140;
x_138 = l_Lean_stxInh;
x_138 = l_Lean_Syntax_inhabited;
x_139 = lean_array_get(x_138, x_136, x_70);
lean_dec(x_136);
x_140 = l_Lean_Elab_Term_elabExplicitUniv(x_139, x_9, x_10);
@ -9716,7 +9716,7 @@ lean_object* _init_l___private_Init_Lean_Elab_TermApp_20__regTraceClasses___clos
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l___private_Init_Lean_Elab_Util_7__regTraceClasses___closed__2;
x_1 = l___private_Init_Lean_Elab_Util_8__regTraceClasses___closed__2;
x_2 = l_Lean_Parser_Term_app___elambda__1___closed__1;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;

View file

@ -25,7 +25,6 @@ lean_object* l___private_Init_Lean_Elab_TermBinders_10__expandFunBindersAux___bo
lean_object* l_Lean_Elab_Term_elabDepArrow___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_instantiateMVars(lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_nameToExprAux___main___closed__1;
extern lean_object* l___private_Init_Lean_Elab_Util_7__regTraceClasses___closed__2;
lean_object* l___private_Init_Lean_Elab_TermBinders_5__matchBinder___closed__2;
lean_object* l_Array_umapMAux___main___at___private_Init_Lean_Elab_TermBinders_5__matchBinder___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabDepArrow(lean_object*, lean_object*, lean_object*, lean_object*);
@ -81,6 +80,7 @@ lean_object* l___private_Init_Lean_Elab_TermBinders_11__expandFunBinders___boxed
lean_object* l___private_Init_Lean_Elab_TermBinders_4__expandBinderModifier___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Elab_TermBinders_4__expandBinderModifier___closed__1;
lean_object* l_Lean_Elab_Term_withLetDecl___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l___private_Init_Lean_Elab_Util_8__regTraceClasses___closed__2;
extern lean_object* l___private_Init_Lean_Elab_Term_8__expandCDot___closed__4;
lean_object* lean_nat_add(lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Elab_TermBinders_11__expandFunBinders(lean_object*, lean_object*, lean_object*, lean_object*);
@ -109,7 +109,6 @@ lean_object* l_Lean_Elab_Term_throwUnsupportedSyntax___rarg(lean_object*);
lean_object* l___private_Init_Lean_Elab_TermBinders_8__getFunBinderIdsAux_x3f___main(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Parser_Term_instBinder___elambda__1___closed__2;
lean_object* l___private_Init_Lean_Elab_TermBinders_6__elabBinderViews(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabTerm(lean_object*, lean_object*, uint8_t, uint8_t, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabForall___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* lean_array_get(lean_object*, lean_object*, lean_object*);
lean_object* l_Array_umapMAux___main___at___private_Init_Lean_Elab_TermBinders_5__matchBinder___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@ -118,6 +117,7 @@ lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
lean_object* l___regBuiltinTermElab_Lean_Elab_Term_elabDepArrow___closed__3;
lean_object* l_Lean_Elab_Term_elabFun___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabFun___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabTermAux___main(lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Elab_Term_expandCDot_x3f___closed__3;
lean_object* l_Lean_Elab_Term_logTrace(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Elab_TermBinders_6__elabBinderViews___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@ -15998,7 +15998,7 @@ lean_object* x_6; uint8_t x_7; lean_object* x_8;
x_6 = lean_box(0);
x_7 = 1;
lean_inc(x_4);
x_8 = l_Lean_Elab_Term_elabTerm(x_1, x_6, x_7, x_7, x_4, x_5);
x_8 = l_Lean_Elab_Term_elabTermAux___main(x_6, x_7, x_7, x_1, x_4, x_5);
if (lean_obj_tag(x_8) == 0)
{
lean_object* x_9; lean_object* x_10; lean_object* x_11;
@ -16627,7 +16627,7 @@ x_10 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_10, 0, x_8);
x_11 = 1;
lean_inc(x_5);
x_12 = l_Lean_Elab_Term_elabTerm(x_2, x_10, x_11, x_11, x_5, x_9);
x_12 = l_Lean_Elab_Term_elabTermAux___main(x_10, x_11, x_11, x_2, x_5, x_9);
if (lean_obj_tag(x_12) == 0)
{
lean_object* x_13; lean_object* x_14; lean_object* x_15;
@ -16788,7 +16788,7 @@ _start:
uint8_t x_7; lean_object* x_8;
x_7 = 1;
lean_inc(x_5);
x_8 = l_Lean_Elab_Term_elabTerm(x_1, x_2, x_7, x_7, x_5, x_6);
x_8 = l_Lean_Elab_Term_elabTermAux___main(x_1, x_7, x_7, x_2, x_5, x_6);
if (lean_obj_tag(x_8) == 0)
{
lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14;
@ -16837,7 +16837,7 @@ lean_object* _init_l_Lean_Elab_Term_elabLetIdDecl___closed__1() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l___private_Init_Lean_Elab_Util_7__regTraceClasses___closed__2;
x_1 = l___private_Init_Lean_Elab_Util_8__regTraceClasses___closed__2;
x_2 = l_Lean_Parser_Term_let___elambda__1___closed__1;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
@ -16912,8 +16912,8 @@ if (x_27 == 0)
lean_object* x_28; lean_object* x_29;
lean_inc(x_1);
x_28 = lean_alloc_closure((void*)(l_Lean_Elab_Term_elabLetIdDecl___lambda__2___boxed), 6, 3);
lean_closure_set(x_28, 0, x_3);
lean_closure_set(x_28, 1, x_4);
lean_closure_set(x_28, 0, x_4);
lean_closure_set(x_28, 1, x_3);
lean_closure_set(x_28, 2, x_1);
x_29 = l_Lean_Elab_Term_withLetDecl___rarg(x_1, x_8, x_21, x_22, x_28, x_5, x_25);
lean_dec(x_1);
@ -16951,8 +16951,8 @@ lean_inc(x_40);
lean_dec(x_39);
lean_inc(x_1);
x_41 = lean_alloc_closure((void*)(l_Lean_Elab_Term_elabLetIdDecl___lambda__2___boxed), 6, 3);
lean_closure_set(x_41, 0, x_3);
lean_closure_set(x_41, 1, x_4);
lean_closure_set(x_41, 0, x_4);
lean_closure_set(x_41, 1, x_3);
lean_closure_set(x_41, 2, x_1);
x_42 = l_Lean_Elab_Term_withLetDecl___rarg(x_1, x_8, x_21, x_22, x_41, x_5, x_40);
lean_dec(x_1);
@ -17570,7 +17570,7 @@ x_99 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_99, 0, x_98);
lean_ctor_set(x_99, 1, x_97);
x_100 = 1;
x_101 = l_Lean_Elab_Term_elabTerm(x_99, x_2, x_100, x_100, x_3, x_82);
x_101 = l_Lean_Elab_Term_elabTermAux___main(x_2, x_100, x_100, x_99, x_3, x_82);
return x_101;
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
// Lean compiler output
// Module: Init.Lean.Hygiene
// Imports: Init.Control Init.Lean.Syntax
// Imports: Init.Control Init.LeanInit Init.Lean.Syntax
#include "runtime/lean.h"
#if defined(__clang__)
#pragma clang diagnostic ignored "-Wunused-parameter"
@ -27,99 +27,11 @@ lean_object* l_Lean_monadQuotationTrans(lean_object*, lean_object*);
lean_object* l_ReaderT_read___at_Lean_Unhygienic_MonadQuotation___spec__1(lean_object*, lean_object*);
lean_object* l_Lean_Unhygienic_MonadQuotation___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_monadQuotationTrans___boxed(lean_object*, lean_object*);
lean_object* l_Lean_addMacroScope(lean_object*, lean_object*);
lean_object* l_Lean_Unhygienic_MonadQuotation;
lean_object* l_Lean_Unhygienic_MonadQuotation___closed__1;
lean_object* l_Lean_monadQuotationTrans___rarg___lambda__1(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_addMacroScopes(lean_object*, lean_object*);
lean_object* l_Lean_Unhygienic_MonadQuotation___closed__2;
lean_object* l___private_Init_Lean_Hygiene_1__extractMacroScopesAux___main(lean_object*, lean_object*);
lean_object* l_List_foldl___main___at_Lean_addMacroScopes___spec__1(lean_object*, lean_object*);
lean_object* lean_name_mk_numeral(lean_object*, lean_object*);
lean_object* l_Lean_addMacroScope(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = lean_name_mk_numeral(x_1, x_2);
return x_3;
}
}
lean_object* l_List_foldl___main___at_Lean_addMacroScopes___spec__1(lean_object* x_1, lean_object* x_2) {
_start:
{
if (lean_obj_tag(x_2) == 0)
{
return x_1;
}
else
{
lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_3 = lean_ctor_get(x_2, 0);
lean_inc(x_3);
x_4 = lean_ctor_get(x_2, 1);
lean_inc(x_4);
lean_dec(x_2);
x_5 = lean_name_mk_numeral(x_1, x_3);
x_1 = x_5;
x_2 = x_4;
goto _start;
}
}
}
lean_object* l_Lean_addMacroScopes(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = l_List_foldl___main___at_Lean_addMacroScopes___spec__1(x_1, x_2);
return x_3;
}
}
lean_object* l___private_Init_Lean_Hygiene_1__extractMacroScopesAux___main(lean_object* x_1, lean_object* x_2) {
_start:
{
if (lean_obj_tag(x_1) == 2)
{
lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_3 = lean_ctor_get(x_1, 0);
lean_inc(x_3);
x_4 = lean_ctor_get(x_1, 1);
lean_inc(x_4);
lean_dec(x_1);
x_5 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_5, 0, x_4);
lean_ctor_set(x_5, 1, x_2);
x_1 = x_3;
x_2 = x_5;
goto _start;
}
else
{
lean_object* x_7; lean_object* x_8;
x_7 = l_List_reverse___rarg(x_2);
x_8 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_8, 0, x_1);
lean_ctor_set(x_8, 1, x_7);
return x_8;
}
}
}
lean_object* l___private_Init_Lean_Hygiene_1__extractMacroScopesAux(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = l___private_Init_Lean_Hygiene_1__extractMacroScopesAux___main(x_1, x_2);
return x_3;
}
}
lean_object* l_Lean_extractMacroScopes(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3;
x_2 = lean_box(0);
x_3 = l___private_Init_Lean_Hygiene_1__extractMacroScopesAux___main(x_1, x_2);
return x_3;
}
}
lean_object* l_ReaderT_read___at_Lean_Unhygienic_MonadQuotation___spec__1(lean_object* x_1, lean_object* x_2) {
_start:
{
@ -206,6 +118,52 @@ x_2 = lean_alloc_closure((void*)(l_Lean_Unhygienic_run___rarg), 1, 0);
return x_2;
}
}
lean_object* l___private_Init_Lean_Hygiene_1__extractMacroScopesAux___main(lean_object* x_1, lean_object* x_2) {
_start:
{
if (lean_obj_tag(x_1) == 2)
{
lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_3 = lean_ctor_get(x_1, 0);
lean_inc(x_3);
x_4 = lean_ctor_get(x_1, 1);
lean_inc(x_4);
lean_dec(x_1);
x_5 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_5, 0, x_4);
lean_ctor_set(x_5, 1, x_2);
x_1 = x_3;
x_2 = x_5;
goto _start;
}
else
{
lean_object* x_7; lean_object* x_8;
x_7 = l_List_reverse___rarg(x_2);
x_8 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_8, 0, x_1);
lean_ctor_set(x_8, 1, x_7);
return x_8;
}
}
}
lean_object* l___private_Init_Lean_Hygiene_1__extractMacroScopesAux(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = l___private_Init_Lean_Hygiene_1__extractMacroScopesAux___main(x_1, x_2);
return x_3;
}
}
lean_object* l_Lean_extractMacroScopes(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3;
x_2 = lean_box(0);
x_3 = l___private_Init_Lean_Hygiene_1__extractMacroScopesAux___main(x_1, x_2);
return x_3;
}
}
lean_object* l_Lean_monadQuotationTrans___rarg___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{
@ -262,6 +220,7 @@ return x_3;
}
}
lean_object* initialize_Init_Control(lean_object*);
lean_object* initialize_Init_LeanInit(lean_object*);
lean_object* initialize_Init_Lean_Syntax(lean_object*);
static bool _G_initialized = false;
lean_object* initialize_Init_Lean_Hygiene(lean_object* w) {
@ -271,6 +230,9 @@ _G_initialized = true;
res = initialize_Init_Control(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
res = initialize_Init_LeanInit(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
res = initialize_Init_Lean_Syntax(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);

View file

@ -142,7 +142,6 @@ lean_object* l_Array_extract___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_addParser(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_categoryParserFnRef;
lean_object* l_Lean_Parser_optionalFn___boxed(lean_object*);
extern lean_object* l_Lean_stxInh;
lean_object* l_Lean_Parser_InputContext_inhabited;
lean_object* l_Lean_Parser_parserExtension___elambda__3___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Parser_Error_HasToString___closed__1;
@ -752,6 +751,7 @@ lean_object* l_Lean_Parser_checkNoWsBefore___boxed(lean_object*, lean_object*);
uint8_t l_UInt32_decEq(uint32_t, uint32_t);
lean_object* l_PersistentHashMap_containsAux___main___at___private_Init_Lean_Parser_Parser_9__addParserCategoryCore___spec__2___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_Array_iterateMAux___main___at___private_Init_Lean_Parser_Parser_17__ParserExtension_addImported___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Syntax_inhabited;
lean_object* l_Lean_Parser_unquotedSymbolFn(uint8_t, lean_object*);
lean_object* l_Lean_Syntax_foldSepRevArgsM___boxed(lean_object*, lean_object*);
lean_object* l_String_intercalate(lean_object*, lean_object*);
@ -8966,7 +8966,7 @@ x_2 = lean_array_get_size(x_1);
x_3 = lean_unsigned_to_nat(1u);
x_4 = lean_nat_sub(x_2, x_3);
lean_dec(x_2);
x_5 = l_Lean_stxInh;
x_5 = l_Lean_Syntax_inhabited;
x_6 = lean_array_get(x_5, x_1, x_4);
lean_dec(x_4);
return x_6;
@ -36255,7 +36255,7 @@ return x_10;
else
{
lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14;
x_11 = l_Lean_stxInh;
x_11 = l_Lean_Syntax_inhabited;
x_12 = lean_unsigned_to_nat(0u);
x_13 = lean_array_get(x_11, x_3, x_12);
x_14 = lean_alloc_ctor(1, 1, 0);

View file

@ -238,7 +238,6 @@ lean_object* l_Lean_Parser_sepBy1Fn___at_Lean_Parser_Term_explicitUniv___elambda
lean_object* l_Lean_Parser_Term_match___elambda__1___closed__8;
lean_object* l_Lean_Parser_Term_explicitUniv___elambda__1___closed__7;
lean_object* l_Lean_Parser_Term_show___elambda__1___closed__2;
extern lean_object* l_Lean_stxInh;
lean_object* l_Lean_Parser_Term_cdot___elambda__1(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_Term_andM___closed__2;
lean_object* l_Lean_Parser_Term_paren___elambda__1___closed__3;
@ -1291,6 +1290,7 @@ lean_object* l_Lean_Parser_Term_uminus___closed__2;
lean_object* l_Lean_Parser_Term_str___elambda__1___closed__2;
lean_object* l_Lean_Parser_Term_explicit___elambda__1___closed__3;
lean_object* l_Lean_Parser_Term_fromTerm___closed__4;
extern lean_object* l_Lean_Syntax_inhabited;
lean_object* l_Lean_Parser_Term_matchAlt___closed__9;
lean_object* l_Lean_Parser_Term_arrayLit;
lean_object* l_Lean_Parser_Term_mul___closed__2;
@ -36477,7 +36477,7 @@ return x_10;
else
{
lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17;
x_11 = l_Lean_stxInh;
x_11 = l_Lean_Syntax_inhabited;
x_12 = lean_unsigned_to_nat(0u);
x_13 = lean_array_get(x_11, x_3, x_12);
x_14 = lean_unsigned_to_nat(1u);
@ -36540,7 +36540,7 @@ return x_10;
else
{
lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14;
x_11 = l_Lean_stxInh;
x_11 = l_Lean_Syntax_inhabited;
x_12 = lean_unsigned_to_nat(1u);
x_13 = lean_array_get(x_11, x_3, x_12);
x_14 = l_Lean_Syntax_isNone(x_13);

View file

@ -16,7 +16,6 @@ extern "C" {
lean_object* lean_array_set(lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Parser_declareLeadingBuiltinParser___closed__1;
lean_object* l_Array_iterateMAux___main___at_Lean_Syntax_manyToSepBy___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_stxInh;
lean_object* l_Lean_Syntax_removeParen___closed__4;
uint8_t lean_name_eq(lean_object*, lean_object*);
lean_object* lean_array_push(lean_object*, lean_object*);
@ -39,6 +38,7 @@ lean_object* l_Lean_Syntax_manyToSepBy(lean_object*, lean_object*);
lean_object* l_Array_back___at___private_Init_Lean_Parser_Parser_6__updateCache___spec__1(lean_object*);
extern lean_object* l_Array_forMAux___main___at_Lean_Environment_displayStats___spec__9___closed__2;
extern lean_object* l_Option_HasRepr___rarg___closed__3;
extern lean_object* l_Lean_Syntax_inhabited;
lean_object* l_Lean_Syntax_getNumArgs(lean_object*);
lean_object* l_Lean_Syntax_removeParen(lean_object*);
uint8_t l_Lean_Syntax_isNone(lean_object*);
@ -157,7 +157,7 @@ if (x_3 == 0)
{
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;
x_4 = lean_ctor_get(x_1, 1);
x_5 = l_Lean_stxInh;
x_5 = l_Lean_Syntax_inhabited;
x_6 = lean_unsigned_to_nat(0u);
x_7 = lean_array_get(x_5, x_4, x_6);
x_8 = l_Lean_mkOptionalNode___closed__1;
@ -176,7 +176,7 @@ x_13 = lean_ctor_get(x_1, 1);
lean_inc(x_13);
lean_inc(x_12);
lean_dec(x_1);
x_14 = l_Lean_stxInh;
x_14 = l_Lean_Syntax_inhabited;
x_15 = lean_unsigned_to_nat(0u);
x_16 = lean_array_get(x_14, x_13, x_15);
x_17 = l_Lean_mkOptionalNode___closed__1;
@ -261,7 +261,7 @@ return x_1;
else
{
lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; uint8_t x_11;
x_6 = l_Lean_stxInh;
x_6 = l_Lean_Syntax_inhabited;
x_7 = lean_unsigned_to_nat(1u);
x_8 = lean_array_get(x_6, x_3, x_7);
x_9 = l_Lean_Syntax_getNumArgs(x_8);

View file

@ -47,9 +47,7 @@ lean_object* l_Lean_Syntax_toNat___boxed(lean_object*);
lean_object* l___private_Init_Lean_Syntax_5__decodeBinLitAux(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Syntax_HasToString;
lean_object* l___private_Init_Lean_Syntax_5__decodeBinLitAux___main___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_stxInh;
extern lean_object* l_Array_empty___closed__1;
lean_object* l_Lean_Syntax_isOfKind___boxed(lean_object*, lean_object*);
lean_object* l_Lean_SyntaxNode_withArgs(lean_object*);
lean_object* l___private_Init_Lean_Syntax_5__decodeBinLitAux___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_fieldIdxKind___closed__1;
@ -97,9 +95,7 @@ extern lean_object* l_Lean_Format_sbracket___closed__2;
lean_object* l_Lean_SyntaxNode_getKind(lean_object*);
lean_object* l_Lean_SyntaxNode_getArgs(lean_object*);
lean_object* l_Lean_Syntax_rewriteBottomUp(lean_object*, lean_object*);
lean_object* l_Lean_Syntax_getKind___closed__2;
lean_object* l___private_Init_Lean_Syntax_5__decodeBinLitAux___main(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Syntax_getKind___closed__1;
lean_object* l___private_Init_Lean_Syntax_11__decodeQuotedChar___boxed__const__3;
lean_object* l_Lean_Syntax_formatStxAux___main___closed__8;
lean_object* lean_string_utf8_next(lean_object*, lean_object*);
@ -113,7 +109,6 @@ lean_object* l_Lean_Syntax_formatStxAux___main___closed__4;
lean_object* l_Array_findRevMAux___main___at_Lean_Syntax_getTailInfo___main___spec__1___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_mkStxNumLit(lean_object*, lean_object*);
lean_object* l_Lean_SyntaxNode_getIdAt(lean_object*, lean_object*);
lean_object* l_Lean_Syntax_getKind___closed__4;
lean_object* l___private_Init_Lean_Syntax_7__decodeHexDigit___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Syntax_isCharLit_x3f(lean_object*);
lean_object* lean_array_fget(lean_object*, lean_object*);
@ -145,7 +140,6 @@ lean_object* l_Lean_strLitKind___closed__1;
lean_object* l_Lean_Syntax_isNatLitAux___boxed(lean_object*, lean_object*);
lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Syntax_3__updateLast(lean_object*);
lean_object* l_Lean_Syntax_getArgs___boxed(lean_object*);
lean_object* l_Lean_Syntax_updateLeading(lean_object*);
lean_object* l_Lean_Syntax_formatStxAux___main___closed__3;
lean_object* l_Lean_mkNullNode(lean_object*);
@ -217,6 +211,7 @@ lean_object* l_List_map___main___at_Lean_Syntax_formatStxAux___main___spec__3___
lean_object* l_Lean_SyntaxNode_getNumArgs(lean_object*);
uint8_t l_UInt32_decEq(uint32_t, uint32_t);
extern lean_object* l_Lean_Format_paren___closed__1;
extern lean_object* l_Lean_Syntax_inhabited;
lean_object* l_List_map___main___at_Lean_Syntax_formatStxAux___main___spec__3(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Syntax_getNumArgs(lean_object*);
lean_object* l_Lean_Syntax_mrewriteBottomUp___boxed(lean_object*);
@ -229,10 +224,7 @@ uint8_t l_Lean_Syntax_hasArgs(lean_object*);
lean_object* l_String_quote(lean_object*);
lean_object* l_Lean_Syntax_asNode___closed__1;
lean_object* l_Lean_Syntax_HasToString___closed__2;
lean_object* l_Lean_Syntax_getArgs(lean_object*);
lean_object* l_Lean_Syntax_getKind(lean_object*);
lean_object* l_Lean_Syntax_mrewriteBottomUp___main___rarg___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Syntax_getArg___boxed(lean_object*, lean_object*);
lean_object* l_Lean_SyntaxNode_withArgs___rarg(lean_object*, lean_object*);
extern lean_object* l_Lean_Format_sbracket___closed__1;
lean_object* l_Lean_Syntax_getHeadInfo___boxed(lean_object*);
@ -261,7 +253,6 @@ lean_object* l_Array_toList___rarg(lean_object*);
lean_object* l_Lean_Syntax_mrewriteBottomUp___main___at_Lean_Syntax_rewriteBottomUp___spec__1(lean_object*, lean_object*);
lean_object* l_List_map___main___at_Lean_Syntax_formatStxAux___main___spec__5(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Syntax_decodeStrLit(lean_object*);
uint8_t l_Lean_Syntax_isOfKind(lean_object*, lean_object*);
lean_object* lean_mk_syntax_list(lean_object*);
lean_object* l_Lean_Syntax_getTailInfo___boxed(lean_object*);
lean_object* l___private_Init_Lean_Syntax_10__decodeNatLitVal(lean_object*);
@ -269,7 +260,6 @@ lean_object* l___private_Init_Lean_Syntax_11__decodeQuotedChar___boxed__const__5
lean_object* l_Lean_Syntax_mreplace___main___rarg___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* lean_string_length(lean_object*);
lean_object* l_Lean_Syntax_mreplace___boxed(lean_object*);
lean_object* l_Lean_Syntax_getKind___closed__3;
lean_object* lean_mk_syntax_str_lit(lean_object*);
lean_object* l_Lean_mkStxLit(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Init_Lean_Syntax_9__decodeDecimalLitAux(lean_object*, lean_object*, lean_object*);
@ -745,14 +735,6 @@ x_1 = l_Lean_fieldIdxKind___closed__2;
return x_1;
}
}
lean_object* _init_l_Lean_stxInh() {
_start:
{
lean_object* x_1;
x_1 = lean_box(0);
return x_1;
}
}
uint8_t l_Lean_Syntax_isMissing(lean_object* x_1) {
_start:
{
@ -880,7 +862,7 @@ _start:
{
lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_3 = lean_ctor_get(x_1, 1);
x_4 = l_Lean_stxInh;
x_4 = l_Lean_Syntax_inhabited;
x_5 = lean_array_get(x_4, x_3, x_2);
return x_5;
}
@ -1200,50 +1182,6 @@ lean_dec(x_1);
return x_2;
}
}
lean_object* l_Lean_Syntax_getArgs(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3;
x_2 = l_Lean_Syntax_asNode(x_1);
x_3 = lean_ctor_get(x_2, 1);
lean_inc(x_3);
lean_dec(x_2);
return x_3;
}
}
lean_object* l_Lean_Syntax_getArgs___boxed(lean_object* x_1) {
_start:
{
lean_object* x_2;
x_2 = l_Lean_Syntax_getArgs(x_1);
lean_dec(x_1);
return x_2;
}
}
lean_object* l_Lean_Syntax_getArg(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
x_3 = l_Lean_Syntax_asNode(x_1);
x_4 = lean_ctor_get(x_3, 1);
lean_inc(x_4);
lean_dec(x_3);
x_5 = l_Lean_stxInh;
x_6 = lean_array_get(x_5, x_4, x_2);
lean_dec(x_4);
return x_6;
}
}
lean_object* l_Lean_Syntax_getArg___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = l_Lean_Syntax_getArg(x_1, x_2);
lean_dec(x_2);
lean_dec(x_1);
return x_3;
}
}
lean_object* l_Lean_Syntax_setArgs(lean_object* x_1, lean_object* x_2) {
_start:
{
@ -1463,80 +1401,6 @@ lean_dec(x_1);
return x_3;
}
}
lean_object* _init_l_Lean_Syntax_getKind___closed__1() {
_start:
{
lean_object* x_1;
x_1 = lean_mk_string("missing");
return x_1;
}
}
lean_object* _init_l_Lean_Syntax_getKind___closed__2() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = lean_box(0);
x_2 = l_Lean_Syntax_getKind___closed__1;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Syntax_getKind___closed__3() {
_start:
{
lean_object* x_1;
x_1 = lean_mk_string("ident");
return x_1;
}
}
lean_object* _init_l_Lean_Syntax_getKind___closed__4() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = lean_box(0);
x_2 = l_Lean_Syntax_getKind___closed__3;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
lean_object* l_Lean_Syntax_getKind(lean_object* x_1) {
_start:
{
switch (lean_obj_tag(x_1)) {
case 0:
{
lean_object* x_2;
x_2 = l_Lean_Syntax_getKind___closed__2;
return x_2;
}
case 1:
{
lean_object* x_3;
x_3 = lean_ctor_get(x_1, 0);
lean_inc(x_3);
lean_dec(x_1);
return x_3;
}
case 2:
{
lean_object* x_4; lean_object* x_5; lean_object* x_6;
x_4 = lean_ctor_get(x_1, 1);
lean_inc(x_4);
lean_dec(x_1);
x_5 = lean_box(0);
x_6 = lean_name_mk_string(x_5, x_4);
return x_6;
}
default:
{
lean_object* x_7;
lean_dec(x_1);
x_7 = l_Lean_Syntax_getKind___closed__4;
return x_7;
}
}
}
}
lean_object* l_Lean_Syntax_mreplace___main___rarg___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{
@ -1734,26 +1598,6 @@ lean_dec(x_1);
return x_2;
}
}
uint8_t l_Lean_Syntax_isOfKind(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3; uint8_t x_4;
x_3 = l_Lean_Syntax_getKind(x_1);
x_4 = lean_name_eq(x_3, x_2);
lean_dec(x_3);
return x_4;
}
}
lean_object* l_Lean_Syntax_isOfKind___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
uint8_t x_3; lean_object* x_4;
x_3 = l_Lean_Syntax_isOfKind(x_1, x_2);
lean_dec(x_2);
x_4 = lean_box(x_3);
return x_4;
}
}
lean_object* l_Lean_Syntax_mrewriteBottomUp___main___rarg___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
_start:
{
@ -2645,7 +2489,7 @@ lean_dec(x_10);
x_11 = lean_unsigned_to_nat(1u);
x_12 = lean_nat_sub(x_5, x_11);
lean_dec(x_5);
x_13 = l_Lean_stxInh;
x_13 = l_Lean_Syntax_inhabited;
x_14 = lean_array_get(x_13, x_4, x_12);
x_15 = l_Lean_Syntax_updateTrailing___main(x_1, x_14);
x_16 = lean_array_set(x_4, x_12, x_15);
@ -2660,7 +2504,7 @@ lean_dec(x_2);
x_17 = lean_unsigned_to_nat(1u);
x_18 = lean_nat_sub(x_5, x_17);
lean_dec(x_5);
x_19 = l_Lean_stxInh;
x_19 = l_Lean_Syntax_inhabited;
x_20 = lean_array_get(x_19, x_4, x_18);
x_21 = l_Lean_Syntax_updateTrailing___main(x_1, x_20);
x_22 = lean_array_set(x_4, x_18, x_21);
@ -3184,7 +3028,7 @@ lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_obj
x_6 = lean_unsigned_to_nat(1u);
x_7 = lean_nat_sub(x_3, x_6);
lean_dec(x_3);
x_8 = l_Lean_stxInh;
x_8 = l_Lean_Syntax_inhabited;
x_9 = lean_array_get(x_8, x_2, x_7);
lean_inc(x_1);
x_10 = l_Lean_Syntax_setTailInfoAux___main(x_1, x_9);
@ -3615,7 +3459,7 @@ lean_dec(x_10);
if (x_12 == 0)
{
lean_object* x_13; lean_object* x_14; lean_object* x_15;
x_13 = l_Lean_stxInh;
x_13 = l_Lean_Syntax_inhabited;
x_14 = lean_array_get(x_13, x_4, x_11);
x_15 = l_Lean_Syntax_reprint___main(x_14);
lean_dec(x_14);
@ -4534,7 +4378,7 @@ _start:
{
lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
x_3 = lean_ctor_get(x_1, 1);
x_4 = l_Lean_stxInh;
x_4 = l_Lean_Syntax_inhabited;
x_5 = lean_array_get(x_4, x_3, x_2);
x_6 = l_Lean_Syntax_getId(x_5);
lean_dec(x_5);
@ -5445,7 +5289,7 @@ return x_10;
else
{
lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_11 = l_Lean_stxInh;
x_11 = l_Lean_Syntax_inhabited;
x_12 = lean_unsigned_to_nat(0u);
x_13 = lean_array_get(x_11, x_4, x_12);
if (lean_obj_tag(x_13) == 2)
@ -6217,7 +6061,7 @@ return x_10;
else
{
lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_11 = l_Lean_stxInh;
x_11 = l_Lean_Syntax_inhabited;
x_12 = lean_unsigned_to_nat(0u);
x_13 = lean_array_get(x_11, x_3, x_12);
if (lean_obj_tag(x_13) == 2)
@ -6357,7 +6201,7 @@ return x_10;
else
{
lean_object* x_11; lean_object* x_12; lean_object* x_13;
x_11 = l_Lean_stxInh;
x_11 = l_Lean_Syntax_inhabited;
x_12 = lean_unsigned_to_nat(0u);
x_13 = lean_array_get(x_11, x_3, x_12);
if (lean_obj_tag(x_13) == 2)
@ -6533,18 +6377,8 @@ l_Lean_fieldIdxKind___closed__2 = _init_l_Lean_fieldIdxKind___closed__2();
lean_mark_persistent(l_Lean_fieldIdxKind___closed__2);
l_Lean_fieldIdxKind = _init_l_Lean_fieldIdxKind();
lean_mark_persistent(l_Lean_fieldIdxKind);
l_Lean_stxInh = _init_l_Lean_stxInh();
lean_mark_persistent(l_Lean_stxInh);
l_Lean_Syntax_asNode___closed__1 = _init_l_Lean_Syntax_asNode___closed__1();
lean_mark_persistent(l_Lean_Syntax_asNode___closed__1);
l_Lean_Syntax_getKind___closed__1 = _init_l_Lean_Syntax_getKind___closed__1();
lean_mark_persistent(l_Lean_Syntax_getKind___closed__1);
l_Lean_Syntax_getKind___closed__2 = _init_l_Lean_Syntax_getKind___closed__2();
lean_mark_persistent(l_Lean_Syntax_getKind___closed__2);
l_Lean_Syntax_getKind___closed__3 = _init_l_Lean_Syntax_getKind___closed__3();
lean_mark_persistent(l_Lean_Syntax_getKind___closed__3);
l_Lean_Syntax_getKind___closed__4 = _init_l_Lean_Syntax_getKind___closed__4();
lean_mark_persistent(l_Lean_Syntax_getKind___closed__4);
l_Lean_Syntax_reprint___main___closed__1 = _init_l_Lean_Syntax_reprint___main___closed__1();
lean_mark_persistent(l_Lean_Syntax_reprint___main___closed__1);
l_Lean_Syntax_formatStxAux___main___closed__1 = _init_l_Lean_Syntax_formatStxAux___main___closed__1();

View file

@ -1,6 +1,6 @@
// Lean compiler output
// Module: Init.LeanInit
// Imports: Init.Data.String.Basic Init.Data.UInt Init.Data.Hashable
// Imports: Init.Data.String.Basic Init.Data.Array.Basic Init.Data.UInt Init.Data.Hashable Init.Control.Reader Init.Control.Option
#include "runtime/lean.h"
#if defined(__clang__)
#pragma clang diagnostic ignored "-Wunused-parameter"
@ -14,10 +14,15 @@
extern "C" {
#endif
lean_object* l_Lean_ParserDescr_pushLeading;
lean_object* l_Lean_MacroM_monadQuotation;
lean_object* l_Lean_ParserDescr_orelse(uint8_t, lean_object*, lean_object*);
lean_object* l_Lean_ParserDescr_optional(uint8_t, lean_object*);
lean_object* l_Lean_ParserDescr_lookahead(uint8_t, lean_object*);
extern lean_object* l_Array_empty___closed__1;
lean_object* l_Lean_Syntax_isOfKind___boxed(lean_object*, lean_object*);
uint8_t lean_name_eq(lean_object*, lean_object*);
lean_object* l_Lean_ParserDescr_many(uint8_t, lean_object*);
lean_object* l_Lean_HasBeq___closed__1;
lean_object* l_Lean_ParserDescr_ident(uint8_t);
lean_object* l_Lean_mkNameSimple(lean_object*);
lean_object* l_Lean_ParserDescr_andthen___boxed(lean_object*, lean_object*, lean_object*);
@ -26,15 +31,21 @@ lean_object* l_Lean_Name_inhabited;
extern lean_object* l_String_splitAux___main___closed__1;
lean_object* l_Lean_Name_hashable___closed__1;
lean_object* l_Lean_ParserDescr_try(uint8_t, lean_object*);
lean_object* l_Lean_Syntax_getKind___closed__2;
lean_object* l_Lean_Syntax_getKind___closed__1;
lean_object* l_Lean_Name_hashable;
lean_object* l_Lean_ParserDescr_str(uint8_t);
lean_object* l_Lean_ParserDescrCore_inhabited(uint8_t);
lean_object* l_Lean_Syntax_getKind___closed__4;
lean_object* l_Lean_ParserDescr_many1(uint8_t, lean_object*);
extern lean_object* l_optional___rarg___closed__1;
lean_object* l_Lean_ParserDescr_many___boxed(lean_object*, lean_object*);
lean_object* l_Lean_ParserDescr_num___boxed(lean_object*);
lean_object* l_Lean_ParserDescr_many1___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Name_hashEx___boxed(lean_object*);
lean_object* lean_array_get(lean_object*, lean_object*, lean_object*);
size_t lean_name_hash(lean_object*);
lean_object* l_Lean_Syntax_getArgs___boxed(lean_object*);
size_t l_Lean_Name_hash(lean_object*);
lean_object* l_Lean_ParserDescr_parser(lean_object*, lean_object*);
lean_object* l_Lean_ParserDescr_lookahead___boxed(lean_object*, lean_object*);
@ -48,18 +59,33 @@ lean_object* l_Lean_ParserDescr_ident___boxed(lean_object*);
lean_object* l_Lean_ParserDescr_str___boxed(lean_object*);
lean_object* l_Lean_ParserDescr_node___boxed(lean_object*, lean_object*, lean_object*);
size_t lean_usize_of_nat(lean_object*);
lean_object* l_Lean_addMacroScope(lean_object*, lean_object*);
lean_object* l_Lean_ParserDescr_nonReservedSymbol___boxed(lean_object*, lean_object*);
lean_object* l_Lean_ParserDescrCore_inhabited___boxed(lean_object*);
lean_object* l_Lean_ParserDescr_sepBy1(uint8_t, lean_object*, lean_object*);
lean_object* l_Lean_Syntax_inhabited;
lean_object* l_Lean_ParserDescr_char___boxed(lean_object*);
lean_object* l_Lean_HasBeq;
lean_object* l_Lean_Syntax_getArgs(lean_object*);
lean_object* l_Lean_Syntax_getKind(lean_object*);
lean_object* l_Lean_Name_beq___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Syntax_getArg___boxed(lean_object*, lean_object*);
lean_object* l_Lean_addMacroScopes(lean_object*, lean_object*);
lean_object* l_Lean_ParserDescr_orelse___boxed(lean_object*, lean_object*, lean_object*);
uint8_t l_Lean_Syntax_isOfKind(lean_object*, lean_object*);
size_t lean_usize_mix_hash(size_t, size_t);
lean_object* l_Lean_MacroM_monadQuotation___closed__1;
lean_object* l_Lean_Syntax_getKind___closed__3;
lean_object* l_Lean_ParserDescr_sepBy___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_List_foldl___main___at_Lean_addMacroScopes___spec__1(lean_object*, lean_object*);
lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*);
lean_object* l_Lean_ParserDescr_num(uint8_t);
lean_object* l_Lean_ParserDescr_symbol(uint8_t, lean_object*, lean_object*);
lean_object* l_Lean_MacroM_monadQuotation___lambda__1(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_ParserDescr_optional___boxed(lean_object*, lean_object*);
lean_object* l_Lean_ParserDescr_nonReservedSymbol(lean_object*, uint8_t);
lean_object* l_Lean_Name_hash___boxed(lean_object*);
lean_object* l_Lean_MacroM_monadQuotation___closed__2;
lean_object* lean_name_mk_numeral(lean_object*, lean_object*);
size_t lean_string_hash(lean_object*);
lean_object* l_Lean_ParserDescr_sepBy1___boxed(lean_object*, lean_object*, lean_object*);
@ -169,6 +195,33 @@ x_3 = lean_name_mk_string(x_2, x_1);
return x_3;
}
}
lean_object* l_Lean_Name_beq___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
uint8_t x_3; lean_object* x_4;
x_3 = lean_name_eq(x_1, x_2);
lean_dec(x_2);
lean_dec(x_1);
x_4 = lean_box(x_3);
return x_4;
}
}
lean_object* _init_l_Lean_HasBeq___closed__1() {
_start:
{
lean_object* x_1;
x_1 = lean_alloc_closure((void*)(l_Lean_Name_beq___boxed), 2, 0);
return x_1;
}
}
lean_object* _init_l_Lean_HasBeq() {
_start:
{
lean_object* x_1;
x_1 = l_Lean_HasBeq___closed__1;
return x_1;
}
}
lean_object* l_Lean_ParserDescrCore_inhabited(uint8_t x_1) {
_start:
{
@ -532,9 +585,244 @@ lean_ctor_set(x_3, 1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Syntax_inhabited() {
_start:
{
lean_object* x_1;
x_1 = lean_box(0);
return x_1;
}
}
lean_object* _init_l_Lean_Syntax_getKind___closed__1() {
_start:
{
lean_object* x_1;
x_1 = lean_mk_string("missing");
return x_1;
}
}
lean_object* _init_l_Lean_Syntax_getKind___closed__2() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = lean_box(0);
x_2 = l_Lean_Syntax_getKind___closed__1;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Syntax_getKind___closed__3() {
_start:
{
lean_object* x_1;
x_1 = lean_mk_string("ident");
return x_1;
}
}
lean_object* _init_l_Lean_Syntax_getKind___closed__4() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = lean_box(0);
x_2 = l_Lean_Syntax_getKind___closed__3;
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
lean_object* l_Lean_Syntax_getKind(lean_object* x_1) {
_start:
{
switch (lean_obj_tag(x_1)) {
case 0:
{
lean_object* x_2;
x_2 = l_Lean_Syntax_getKind___closed__2;
return x_2;
}
case 1:
{
lean_object* x_3;
x_3 = lean_ctor_get(x_1, 0);
lean_inc(x_3);
lean_dec(x_1);
return x_3;
}
case 2:
{
lean_object* x_4; lean_object* x_5; lean_object* x_6;
x_4 = lean_ctor_get(x_1, 1);
lean_inc(x_4);
lean_dec(x_1);
x_5 = lean_box(0);
x_6 = lean_name_mk_string(x_5, x_4);
return x_6;
}
default:
{
lean_object* x_7;
lean_dec(x_1);
x_7 = l_Lean_Syntax_getKind___closed__4;
return x_7;
}
}
}
}
uint8_t l_Lean_Syntax_isOfKind(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3; uint8_t x_4;
x_3 = l_Lean_Syntax_getKind(x_1);
x_4 = lean_name_eq(x_3, x_2);
lean_dec(x_3);
return x_4;
}
}
lean_object* l_Lean_Syntax_isOfKind___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
uint8_t x_3; lean_object* x_4;
x_3 = l_Lean_Syntax_isOfKind(x_1, x_2);
lean_dec(x_2);
x_4 = lean_box(x_3);
return x_4;
}
}
lean_object* l_Lean_Syntax_getArg(lean_object* x_1, lean_object* x_2) {
_start:
{
if (lean_obj_tag(x_1) == 1)
{
lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_3 = lean_ctor_get(x_1, 1);
x_4 = l_Lean_Syntax_inhabited;
x_5 = lean_array_get(x_4, x_3, x_2);
return x_5;
}
else
{
lean_object* x_6;
x_6 = lean_box(0);
return x_6;
}
}
}
lean_object* l_Lean_Syntax_getArg___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = l_Lean_Syntax_getArg(x_1, x_2);
lean_dec(x_2);
lean_dec(x_1);
return x_3;
}
}
lean_object* l_Lean_Syntax_getArgs(lean_object* x_1) {
_start:
{
if (lean_obj_tag(x_1) == 1)
{
lean_object* x_2;
x_2 = lean_ctor_get(x_1, 1);
lean_inc(x_2);
return x_2;
}
else
{
lean_object* x_3;
x_3 = l_Array_empty___closed__1;
return x_3;
}
}
}
lean_object* l_Lean_Syntax_getArgs___boxed(lean_object* x_1) {
_start:
{
lean_object* x_2;
x_2 = l_Lean_Syntax_getArgs(x_1);
lean_dec(x_1);
return x_2;
}
}
lean_object* l_Lean_addMacroScope(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = lean_name_mk_numeral(x_1, x_2);
return x_3;
}
}
lean_object* l_List_foldl___main___at_Lean_addMacroScopes___spec__1(lean_object* x_1, lean_object* x_2) {
_start:
{
if (lean_obj_tag(x_2) == 0)
{
return x_1;
}
else
{
lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_3 = lean_ctor_get(x_2, 0);
lean_inc(x_3);
x_4 = lean_ctor_get(x_2, 1);
lean_inc(x_4);
lean_dec(x_2);
x_5 = lean_name_mk_numeral(x_1, x_3);
x_1 = x_5;
x_2 = x_4;
goto _start;
}
}
}
lean_object* l_Lean_addMacroScopes(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = l_List_foldl___main___at_Lean_addMacroScopes___spec__1(x_1, x_2);
return x_3;
}
}
lean_object* l_Lean_MacroM_monadQuotation___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{
lean_object* x_4;
x_4 = lean_apply_1(x_2, x_3);
return x_4;
}
}
lean_object* _init_l_Lean_MacroM_monadQuotation___closed__1() {
_start:
{
lean_object* x_1;
x_1 = lean_alloc_closure((void*)(l_Lean_MacroM_monadQuotation___lambda__1), 3, 0);
return x_1;
}
}
lean_object* _init_l_Lean_MacroM_monadQuotation___closed__2() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_optional___rarg___closed__1;
x_2 = l_Lean_MacroM_monadQuotation___closed__1;
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_MacroM_monadQuotation() {
_start:
{
lean_object* x_1;
x_1 = l_Lean_MacroM_monadQuotation___closed__2;
return x_1;
}
}
lean_object* initialize_Init_Data_String_Basic(lean_object*);
lean_object* initialize_Init_Data_Array_Basic(lean_object*);
lean_object* initialize_Init_Data_UInt(lean_object*);
lean_object* initialize_Init_Data_Hashable(lean_object*);
lean_object* initialize_Init_Control_Reader(lean_object*);
lean_object* initialize_Init_Control_Option(lean_object*);
static bool _G_initialized = false;
lean_object* initialize_Init_LeanInit(lean_object* w) {
lean_object * res;
@ -543,20 +831,49 @@ _G_initialized = true;
res = initialize_Init_Data_String_Basic(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
res = initialize_Init_Data_Array_Basic(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
res = initialize_Init_Data_UInt(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
res = initialize_Init_Data_Hashable(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
res = initialize_Init_Control_Reader(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
res = initialize_Init_Control_Option(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
l_Lean_Name_inhabited = _init_l_Lean_Name_inhabited();
lean_mark_persistent(l_Lean_Name_inhabited);
l_Lean_Name_hashable___closed__1 = _init_l_Lean_Name_hashable___closed__1();
lean_mark_persistent(l_Lean_Name_hashable___closed__1);
l_Lean_Name_hashable = _init_l_Lean_Name_hashable();
lean_mark_persistent(l_Lean_Name_hashable);
l_Lean_HasBeq___closed__1 = _init_l_Lean_HasBeq___closed__1();
lean_mark_persistent(l_Lean_HasBeq___closed__1);
l_Lean_HasBeq = _init_l_Lean_HasBeq();
lean_mark_persistent(l_Lean_HasBeq);
l_Lean_ParserDescr_pushLeading = _init_l_Lean_ParserDescr_pushLeading();
lean_mark_persistent(l_Lean_ParserDescr_pushLeading);
l_Lean_Syntax_inhabited = _init_l_Lean_Syntax_inhabited();
lean_mark_persistent(l_Lean_Syntax_inhabited);
l_Lean_Syntax_getKind___closed__1 = _init_l_Lean_Syntax_getKind___closed__1();
lean_mark_persistent(l_Lean_Syntax_getKind___closed__1);
l_Lean_Syntax_getKind___closed__2 = _init_l_Lean_Syntax_getKind___closed__2();
lean_mark_persistent(l_Lean_Syntax_getKind___closed__2);
l_Lean_Syntax_getKind___closed__3 = _init_l_Lean_Syntax_getKind___closed__3();
lean_mark_persistent(l_Lean_Syntax_getKind___closed__3);
l_Lean_Syntax_getKind___closed__4 = _init_l_Lean_Syntax_getKind___closed__4();
lean_mark_persistent(l_Lean_Syntax_getKind___closed__4);
l_Lean_MacroM_monadQuotation___closed__1 = _init_l_Lean_MacroM_monadQuotation___closed__1();
lean_mark_persistent(l_Lean_MacroM_monadQuotation___closed__1);
l_Lean_MacroM_monadQuotation___closed__2 = _init_l_Lean_MacroM_monadQuotation___closed__2();
lean_mark_persistent(l_Lean_MacroM_monadQuotation___closed__2);
l_Lean_MacroM_monadQuotation = _init_l_Lean_MacroM_monadQuotation();
lean_mark_persistent(l_Lean_MacroM_monadQuotation);
return lean_mk_io_result(lean_box(0));
}
#ifdef __cplusplus