chore: update stage0

This commit is contained in:
Leonardo de Moura 2020-06-03 15:26:59 -07:00
parent 9a349a913a
commit 2fbf3cff15
12 changed files with 2743 additions and 2142 deletions

View file

@ -50,7 +50,7 @@ private partial def insertAux (s : String) (val : α) : Trie α → String.Pos
def insert (t : Trie α) (s : String) (val : α) : Trie α :=
insertAux s val t 0
private partial def findAux (s : String) : Trie α → String.Pos → Option α
private partial def findAux? (s : String) : Trie α → String.Pos → Option α
| Trie.Node val m, i =>
match s.atEnd i with
| true => val
@ -59,10 +59,10 @@ private partial def findAux (s : String) : Trie α → String.Pos → Option α
let i := s.next i;
match RBNode.find Char.lt m c with
| none => none
| some t => findAux t i
| some t => findAux? t i
def find (t : Trie α) (s : String) : Option α :=
findAux s t 0
def find? (t : Trie α) (s : String) : Option α :=
findAux? s t 0
private def updtAcc (v : Option α) (i : String.Pos) (acc : String.Pos × Option α) : String.Pos × Option α :=
match v, acc with

View file

@ -604,14 +604,6 @@ fun stx expectedType? => match_syntax stx with
but it is nice to have a handler for them because it allows `macros` to insert them into terms. -/
@[builtinTermElab ident] def elabRawIdent : TermElab := elabAtom
@[builtinTermElab sortApp] def elabSortApp : TermElab :=
fun stx _ => do
u ← elabLevel (stx.getArg 1);
if (stx.getArg 0).getKind == `Lean.Parser.Term.sort then do
pure $ mkSort u
else
pure $ mkSort (mkLevelSucc u)
@[init] private def regTraceClasses : IO Unit := do
registerTraceClass `Elab.app;
pure ()

View file

@ -102,8 +102,13 @@ partial def toParserDescrAux : Syntax → ToParserDescrM Syntax
if ctx.leadingIdentAsSymbol && rbp?.isNone then
`(ParserDescr.nonReservedSymbol $(quote atom) false)
else
-- TODO: fix (quote rbp?)
`(ParserDescr.symbol $(quote atom) $(quote rbp?))
match rbp? with
| some rbp => `(ParserDescr.symbol $(quote atom) $(quote rbp))
| none => do
env ← liftM getEnv;
match Parser.getTokenLbp? env atom with
| some lbp => `(ParserDescr.symbol $(quote atom) $(quote lbp))
| none => `(ParserDescr.symbol $(quote atom) 0)
| none => liftM throwUnsupportedSyntax
else if kind == `Lean.Parser.Syntax.num then
`(ParserDescr.numLit)

View file

@ -3,6 +3,59 @@ Copyright (c) 2019 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura, Sebastian Ullrich
-/
/-!
# Basic Lean parser infrastructure
The Lean parser was developed with the following primary goals in mind:
* flexibility: Lean's grammar is complex and includes indentation and other whitespace sensitivity. It should be
possible to introduce such custom "tweaks" locally without having to adjust the fundamental parsing approach.
* extensibility: Lean's grammar can be extended on the fly within a Lean file, and with Lean 4 we want to extend this
to cover embedding domain-specific languages that may look nothing like Lean, down to using a separate set of tokens.
* losslessness: The parser should produce a concrete syntax tree that preserves all whitespace and other "sub-token"
information for the use in tooling.
* performance: The overhead of the parser building blocks, and the overall parser performance on average-complexity
input, should be comparable with that of the previous parser hand-written in C++. No fancy optimizations should be
necessary for this.
Given these constraints, we decided to implement a combinatoric, non-monadic, lexer-less, memoizing recursive-descent
parser. Using combinators instead of some more formal and introspectible grammar representation ensures ultimate
flexibility as well as efficient extensibility: there is (almost) no pre-processing necessary when extending the grammar
with a new parser. However, because the all results the combinators produce are of the homogeneous `Syntax` type, the
basic parser type is not actually a monad but a monomorphic linear function `ParserState → ParserState`, avoiding
constructing and deconstructing countless monadic return values. Instead of explicitly returning syntax objects, parsers
push (zero or more of) them onto a syntax stack inside the linear state. Chaining parsers via `>>` accumulates their
output on the stack. Combinators such as `node` then pop off all syntax objects produced during their invocation and
wrap them in a single `Syntax.node` object that is again pushed on this stack. Instead of calling `node` directly, we
usually use the macro `parser! p`, which unfolds to `node k p` where the new syntax node kind `k` is the name of the
declaration being defined.
We remark the design is inspired by the "Arrow"-approach described at the paper "Generalizing Monads to Arrows", and
used at the Swierstra and Duponcheel's parsing library (SDPL). As in SDPL, a parser is a combination of static information
(`ParserInfo`) which is computed before parsing begins, and the parsing function `ParserState → ParserState`.
The lack of a dedicated lexer ensures we can modify and replace the lexical grammar at any point, and simplifies
detecting and propagating whitespace. The parser still has a concept of "tokens", however, and caches the most recent
one for performance: when `tokenFn` is called twice at the same position in the input, it will reuse the result of the
first call. `tokenFn` recognizes some built-in variable-length tokens such as identifiers as well as any fixed token in
the `ParserContext`'s `TokenTable` (a trie); however, the same cache field and strategy could be reused by custom token
parsers. Tokens also play a central role in the `prattParser` combinator, which selects a *leading* parser followed by
zero or more *trailing* parsers based on the current token (via `peekToken`) and its associated precedence; see the
documentation of `prattParser` for more details. Token precedences are specified via the `symbol` parser, or with
`symbolNoWs` for tokens that should not be preceded by whitespace. The `Parser` type is extended with additional
metadata over the mere parsing function to propagate token information: `collectTokens` collects all tokens within a
parser for registering. `firstTokens` holds information about the "FIRST" token set used to speed up parser selection in
`prattParser`. If multiple parsers accept the same current token, `prattParser` tries all of them using the backtracking
`longestMatchFn` combinator. This is the only case where standard parsers might execute arbitrary backtracking. At the
moment there is no memoization shared by these parallel parsers apart from the first token, though we might change this
in the future if the need arises.
Finally, error reporting follows the standard combinatoric approach of collecting a single unexpected token/... and zero
or more expected tokens (see `Error` below). Expected tokens are e.g. set by `symbol` and merged by `<|>`. Combinators
running multiple parsers should check if an error message is set in the parser state (`hasError`) and act accordingly.
Error recovery is left to the designer of the specific language; for example, Lean's top-level `parseCommand` loop skips
tokens until the next command keyword on error.
-/
prelude
import Lean.Data.Trie
import Lean.Data.Position
@ -1053,15 +1106,19 @@ let asciiSym := asciiSym.trim;
{ info := unicodeSymbolInfo sym asciiSym lbp,
fn := unicodeSymbolFn sym asciiSym }
/- Succeeds if RBP > lower -/
def checkRBPGreaterFn (lower : Nat) (errorMsg : String) : ParserFn :=
/- Succeeds if RBP < upper -/
def checkRbpLtFn (upper : Nat) (errorMsg : String) : ParserFn :=
fun c s =>
if c.rbp > lower then s.mkUnexpectedError errorMsg
else s
if c.rbp < upper then s
else s.mkUnexpectedError errorMsg
def checkRBPGreater (lower : Nat) (errorMsg : String) : Parser :=
def checkRbpLt (lower : Nat) (errorMsg : String := "unexpected RBP") : Parser :=
{ info := epsilonInfo,
fn := checkRBPGreaterFn lower errorMsg }
fn := checkRbpLtFn lower errorMsg }
/- Succeeds if RBP <= upper -/
def checkRbpLe (upper : Nat) (errorMsg : String := "unexpected RBP") : Parser :=
checkRbpLt (upper + 1) errorMsg
def mkAtomicInfo (k : String) : ParserInfo :=
{ firstTokens := FirstTokens.tokens [ { val := k } ] }
@ -1548,7 +1605,22 @@ partial def trailingLoop (tables : PrattParsingTables) (c : ParserContext) : Par
trailingLoop s
/--
Implements a recursive precedence parser according to Pratt's algorithm.
Implements a recursive precedence parser according to Pratt's algorithm: select a parser (or more, via
`longestMatchFn`) from `leadingTable` based on the current token (falling back to unindexed `leadingParsers` such as
application), then chain with parsers from `trailingTable`/`trailingParsers` as long as the precedence of the current
token is higher than `rbp` of the parser state.
As an extension of the original algorithm, we also check the current token's precedence before calling the leading
parser(s). We do this so we can define an n-ary application parser:
```
@[builtinTermParser] def app := tparser! many1 (namedArgument <|> termParser appPrec)
```
If the nested `termParser appPrec` did not check the precedence of the first token, we would accept bogus input such as
`f x fun y => y` because we would never check the precedence of `fun`. Note that, in contrast to trailing tokens, a
leading token is accepted if its precedence is *at least* `rbp`. This is necessary so that `f x y` is not parsed as
`f (x y)`: the nested `termParser` call must accept the leading token `x` but not the trailing token `y`. But both have
the same precedence as identifiers, so we must use different comparisons.
`antiquotParser` should be a `mkAntiquot` parser (or always fail) and is tried before all other parsers.
It should not be added to the regular leading parsers because it would heavily
@ -1627,7 +1699,7 @@ private def mergePrecendences (msgPreamble : String) (sym : String) : Option Nat
private def addTokenConfig (tokens : TokenTable) (tk : TokenConfig) : Except String TokenTable := do
if tk.val == "" then throw "invalid empty symbol"
else match tokens.find tk.val with
else match tokens.find? tk.val with
| none => pure $ tokens.insert tk.val tk
| some oldTk => do
lbp ← mergePrecendences "" tk.val oldTk.lbp tk.lbp;
@ -1855,6 +1927,11 @@ kinds.foldl (fun ks k _ => k::ks) []
def getTokenTable (env : Environment) : TokenTable :=
(parserExtension.getState env).tokens
def getTokenLbp? (env : Environment) (sym : String) : Option Nat := do
let tokens := getTokenTable env;
tk ← tokens.find? sym;
tk.lbp
def mkInputContext (input : String) (fileName : String) : InputContext :=
{ input := input,
fileName := fileName,

View file

@ -52,8 +52,8 @@ def namedPattern := checkNoWsBefore "no space before '@'" >> parser! symbol "@"
@[builtinTermParser] def num : Parser := parser! numLit
@[builtinTermParser] def str : Parser := parser! strLit
@[builtinTermParser] def char : Parser := parser! charLit
@[builtinTermParser] def type := parser! symbol "Type" appPrec
@[builtinTermParser] def sort := parser! symbol "Sort" appPrec
@[builtinTermParser] def type := parser! symbol "Type" appPrec >> optional (checkRbpLt appPrec >> levelParser appPrec)
@[builtinTermParser] def sort := parser! symbol "Sort" appPrec >> optional (checkRbpLt appPrec >> levelParser appPrec)
@[builtinTermParser] def prop := parser! symbol "Prop" appPrec
@[builtinTermParser] def hole := parser! symbol "_" appPrec
@[builtinTermParser] def namedHole := parser! symbol "?" appPrec >> ident
@ -91,7 +91,7 @@ def explicitBinder (requireType := false) := parser! symbol "(" appPrec >> many1
def implicitBinder (requireType := false) := parser! symbol "{" appPrec >> many1 binderIdent >> binderType requireType >> "}"
def instBinder := parser! symbol "[" appPrec >> optIdent >> termParser >> "]"
def bracketedBinder (requireType := false) := explicitBinder requireType <|> implicitBinder requireType <|> instBinder
@[builtinTermParser] def depArrow := parser! bracketedBinder true >> checkRBPGreater 25 "expected parentheses around dependent arrow" >> unicodeSymbol " → " " -> " >> termParser
@[builtinTermParser] def depArrow := parser! bracketedBinder true >> checkRbpLe 25 "expected parentheses around dependent arrow" >> unicodeSymbol " → " " -> " >> termParser
def simpleBinder := parser! many1 binderIdent
@[builtinTermParser] def «forall» := parser! unicodeSymbol "∀" "forall" leadPrec >> many1 (simpleBinder <|> bracketedBinder) >> ", " >> termParser
@ -149,7 +149,6 @@ def namedArgument := parser! try (symbol "(" appPrec >> ident >> " := ") >> ter
@[builtinTermParser] def app := tparser! many1 (namedArgument <|> termParser appPrec)
def checkIsSort := checkStackTop (fun stx => stx.isOfKind `Lean.Parser.Term.type || stx.isOfKind `Lean.Parser.Term.sort)
@[builtinTermParser] def sortApp := tparser! checkIsSort >> levelParser appPrec
@[builtinTermParser] def proj := tparser! symbolNoWs "." (appPrec+1) >> (fieldIdx <|> ident)
@[builtinTermParser] def arrow := tparser! unicodeInfixR " → " " -> " 25
@[builtinTermParser] def arrayRef := tparser! symbolNoWs "[" (appPrec+1) >> termParser >>"]"

View file

@ -14,10 +14,12 @@
extern "C" {
#endif
lean_object* l_RBNode_insert___at___private_Lean_Data_Trie_2__insertAux___main___spec__5(lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux_x3f___main___spec__1(lean_object*);
uint8_t l_RBNode_isRed___rarg(lean_object*);
lean_object* l___private_Lean_Data_Trie_4__updtAcc(lean_object*);
lean_object* l_Lean_Parser_Trie_find_x3f(lean_object*);
lean_object* l___private_Lean_Data_Trie_6__toStringAux___main___rarg(lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___main(lean_object*);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__4(lean_object*);
lean_object* l_RBNode_fold___main___at___private_Lean_Data_Trie_6__toStringAux___main___spec__2___rarg(lean_object*, lean_object*);
lean_object* l_Lean_Format_pretty(lean_object*, lean_object*);
@ -25,40 +27,38 @@ lean_object* l_Lean_Parser_Trie_HasEmptyc(lean_object*);
lean_object* l_Lean_Parser_Trie_HasToString___rarg(lean_object*);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__7___rarg(lean_object*, uint32_t, lean_object*);
lean_object* l_Lean_Parser_Trie_matchPrefix___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f(lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux_x3f___main___spec__1___rarg___boxed(lean_object*, lean_object*);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__4___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_Trie_empty(lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux_x3f___main___spec__1___rarg(lean_object*, uint32_t);
lean_object* l_RBNode_insert___at___private_Lean_Data_Trie_2__insertAux___main___spec__5___rarg(lean_object*, uint32_t, lean_object*);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__7(lean_object*);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__6___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* lean_string_append(lean_object*, lean_object*);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__3___rarg(lean_object*, uint32_t, lean_object*);
lean_object* l___private_Lean_Data_Trie_6__toStringAux___rarg(lean_object*);
lean_object* l_Lean_Parser_Trie_find___rarg(lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_5__matchPrefixAux___main(lean_object*);
lean_object* l_RBNode_insert___at___private_Lean_Data_Trie_2__insertAux___main___spec__2___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_5__matchPrefixAux___main___spec__1___rarg(lean_object*, uint32_t);
lean_object* l___private_Lean_Data_Trie_3__findAux___main___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_Trie_matchPrefix___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* lean_string_utf8_next(lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux___main(lean_object*);
lean_object* l_Lean_Parser_Trie_HasEmptyc___closed__1;
lean_object* l___private_Lean_Data_Trie_4__updtAcc___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_2__insertAux___main(lean_object*);
lean_object* l_Lean_Format_joinSep___main___at___private_Lean_Data_Trie_6__toStringAux___main___spec__1(lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_5__matchPrefixAux___main___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg___boxed(lean_object*, lean_object*, lean_object*);
uint8_t l_UInt32_decLt(uint32_t, uint32_t);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__3(lean_object*);
extern lean_object* l_Char_HasRepr___closed__1;
lean_object* l___private_Lean_Data_Trie_3__findAux___main___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_Trie_find_x3f___rarg(lean_object*, lean_object*);
lean_object* l_Lean_Parser_Trie_insert___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_5__matchPrefixAux___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_1__insertEmptyAux___main(lean_object*);
lean_object* l_Lean_Parser_Trie_matchPrefix(lean_object*);
uint32_t lean_string_utf8_get(lean_object*, lean_object*);
extern lean_object* l_Lean_Options_empty;
lean_object* l_Lean_Parser_Trie_find___rarg___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Parser_Trie_find(lean_object*);
lean_object* l___private_Lean_Data_Trie_2__insertAux___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_RBNode_insert___at___private_Lean_Data_Trie_2__insertAux___main___spec__2___rarg(lean_object*, uint32_t, lean_object*);
lean_object* l_Lean_Parser_Trie_HasToString(lean_object*);
@ -66,8 +66,8 @@ lean_object* l_Lean_Parser_Trie_Inhabited(lean_object*);
lean_object* l_RBNode_insert___at___private_Lean_Data_Trie_2__insertAux___main___spec__2(lean_object*);
lean_object* l_RBNode_fold___main___at___private_Lean_Data_Trie_6__toStringAux___main___spec__2(lean_object*);
lean_object* l___private_Lean_Data_Trie_2__insertAux___main___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux___main___spec__1(lean_object*);
lean_object* l___private_Lean_Data_Trie_1__insertEmptyAux___main___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_Trie_insert___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__6(lean_object*);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__6___rarg(lean_object*, uint32_t, lean_object*);
@ -76,7 +76,6 @@ lean_object* l___private_Lean_Data_Trie_2__insertAux___rarg(lean_object*, lean_o
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__3___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_5__matchPrefixAux___main___spec__1___rarg___boxed(lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_4__updtAcc___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux(lean_object*);
lean_object* l___private_Lean_Data_Trie_1__insertEmptyAux___main___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_1__insertEmptyAux___rarg(lean_object*, lean_object*, lean_object*);
lean_object* lean_format_group(lean_object*);
@ -84,11 +83,12 @@ lean_object* l_RBNode_setBlack___rarg(lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__1___rarg(lean_object*, uint32_t);
lean_object* l_Lean_Parser_Trie_empty___closed__1;
lean_object* l___private_Lean_Data_Trie_2__insertAux(lean_object*);
lean_object* l_Lean_Parser_Trie_find_x3f___rarg___boxed(lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_2__insertAux___main___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_1__insertEmptyAux___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_1__insertEmptyAux(lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__1(lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux___main___spec__1___rarg(lean_object*, uint32_t);
lean_object* l___private_Lean_Data_Trie_5__matchPrefixAux___main___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Format_joinSep___main___at___private_Lean_Data_Trie_6__toStringAux___main___spec__1___boxed(lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_6__toStringAux(lean_object*);
@ -98,10 +98,10 @@ uint8_t lean_string_utf8_at_end(lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_5__matchPrefixAux(lean_object*);
lean_object* l___private_Lean_Data_Trie_5__matchPrefixAux___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_RBNode_insert___at___private_Lean_Data_Trie_2__insertAux___main___spec__5___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_6__toStringAux___main(lean_object*);
lean_object* l_Lean_Parser_Trie_insert(lean_object*);
lean_object* l_RBNode_ins___main___at___private_Lean_Data_Trie_2__insertAux___main___spec__4___rarg(lean_object*, uint32_t, lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux___main___spec__1___rarg___boxed(lean_object*, lean_object*);
lean_object* l_RBNode_singleton___rarg(lean_object*, lean_object*);
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_5__matchPrefixAux___main___spec__1(lean_object*);
lean_object* _init_l_Lean_Parser_Trie_empty___closed__1() {
@ -10223,7 +10223,7 @@ lean_dec(x_2);
return x_4;
}
}
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux___main___spec__1___rarg(lean_object* x_1, uint32_t x_2) {
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux_x3f___main___spec__1___rarg(lean_object* x_1, uint32_t x_2) {
_start:
{
if (lean_obj_tag(x_1) == 0)
@ -10279,15 +10279,15 @@ goto _start;
}
}
}
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux___main___spec__1(lean_object* x_1) {
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux_x3f___main___spec__1(lean_object* x_1) {
_start:
{
lean_object* x_2;
x_2 = lean_alloc_closure((void*)(l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux___main___spec__1___rarg___boxed), 2, 0);
x_2 = lean_alloc_closure((void*)(l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux_x3f___main___spec__1___rarg___boxed), 2, 0);
return x_2;
}
}
lean_object* l___private_Lean_Data_Trie_3__findAux___main___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{
lean_object* x_4; lean_object* x_5; uint8_t x_6;
@ -10304,7 +10304,7 @@ lean_dec(x_4);
x_7 = lean_string_utf8_get(x_1, x_3);
x_8 = lean_string_utf8_next(x_1, x_3);
lean_dec(x_3);
x_9 = l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux___main___spec__1___rarg(x_5, x_7);
x_9 = l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux_x3f___main___spec__1___rarg(x_5, x_7);
if (lean_obj_tag(x_9) == 0)
{
lean_object* x_10;
@ -10331,80 +10331,80 @@ return x_4;
}
}
}
lean_object* l___private_Lean_Data_Trie_3__findAux___main(lean_object* x_1) {
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___main(lean_object* x_1) {
_start:
{
lean_object* x_2;
x_2 = lean_alloc_closure((void*)(l___private_Lean_Data_Trie_3__findAux___main___rarg___boxed), 3, 0);
x_2 = lean_alloc_closure((void*)(l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg___boxed), 3, 0);
return x_2;
}
}
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux___main___spec__1___rarg___boxed(lean_object* x_1, lean_object* x_2) {
lean_object* l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux_x3f___main___spec__1___rarg___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
uint32_t x_3; lean_object* x_4;
x_3 = lean_unbox_uint32(x_2);
lean_dec(x_2);
x_4 = l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux___main___spec__1___rarg(x_1, x_3);
x_4 = l_RBNode_find___main___at___private_Lean_Data_Trie_3__findAux_x3f___main___spec__1___rarg(x_1, x_3);
return x_4;
}
}
lean_object* l___private_Lean_Data_Trie_3__findAux___main___rarg___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{
lean_object* x_4;
x_4 = l___private_Lean_Data_Trie_3__findAux___main___rarg(x_1, x_2, x_3);
x_4 = l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg(x_1, x_2, x_3);
lean_dec(x_1);
return x_4;
}
}
lean_object* l___private_Lean_Data_Trie_3__findAux___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{
lean_object* x_4;
x_4 = l___private_Lean_Data_Trie_3__findAux___main___rarg(x_1, x_2, x_3);
x_4 = l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg(x_1, x_2, x_3);
return x_4;
}
}
lean_object* l___private_Lean_Data_Trie_3__findAux(lean_object* x_1) {
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f(lean_object* x_1) {
_start:
{
lean_object* x_2;
x_2 = lean_alloc_closure((void*)(l___private_Lean_Data_Trie_3__findAux___rarg___boxed), 3, 0);
x_2 = lean_alloc_closure((void*)(l___private_Lean_Data_Trie_3__findAux_x3f___rarg___boxed), 3, 0);
return x_2;
}
}
lean_object* l___private_Lean_Data_Trie_3__findAux___rarg___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___rarg___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
_start:
{
lean_object* x_4;
x_4 = l___private_Lean_Data_Trie_3__findAux___rarg(x_1, x_2, x_3);
x_4 = l___private_Lean_Data_Trie_3__findAux_x3f___rarg(x_1, x_2, x_3);
lean_dec(x_1);
return x_4;
}
}
lean_object* l_Lean_Parser_Trie_find___rarg(lean_object* x_1, lean_object* x_2) {
lean_object* l_Lean_Parser_Trie_find_x3f___rarg(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3; lean_object* x_4;
x_3 = lean_unsigned_to_nat(0u);
x_4 = l___private_Lean_Data_Trie_3__findAux___main___rarg(x_2, x_1, x_3);
x_4 = l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg(x_2, x_1, x_3);
return x_4;
}
}
lean_object* l_Lean_Parser_Trie_find(lean_object* x_1) {
lean_object* l_Lean_Parser_Trie_find_x3f(lean_object* x_1) {
_start:
{
lean_object* x_2;
x_2 = lean_alloc_closure((void*)(l_Lean_Parser_Trie_find___rarg___boxed), 2, 0);
x_2 = lean_alloc_closure((void*)(l_Lean_Parser_Trie_find_x3f___rarg___boxed), 2, 0);
return x_2;
}
}
lean_object* l_Lean_Parser_Trie_find___rarg___boxed(lean_object* x_1, lean_object* x_2) {
lean_object* l_Lean_Parser_Trie_find_x3f___rarg___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = l_Lean_Parser_Trie_find___rarg(x_1, x_2);
x_3 = l_Lean_Parser_Trie_find_x3f___rarg(x_1, x_2);
lean_dec(x_2);
return x_3;
}

View file

@ -226,6 +226,7 @@ uint8_t l_Lean_Elab_Term_blockImplicitLambda(lean_object*);
lean_object* l_Lean_Delaborator_delabOfNat___closed__2;
lean_object* l___regBuiltin_Lean_Delaborator_delabLit(lean_object*);
lean_object* l_Lean_Delaborator_delabAttribute___closed__2;
lean_object* l_Lean_Delaborator_delabSort___closed__14;
lean_object* l_Lean_Delaborator_mkDelabAttribute___lambda__1(lean_object*, lean_object*);
lean_object* l_Lean_Delaborator_delabForall___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Delaborator_delabAppImplicit___closed__5;
@ -241,6 +242,7 @@ lean_object* l_Lean_Delaborator_delabFor___main(lean_object*, lean_object*, lean
extern lean_object* l_Lean_Parser_Term_explicitBinder___elambda__1___closed__2;
lean_object* l_Lean_Syntax_getId(lean_object*);
lean_object* l_Lean_Delaborator_delabProjectionApp___closed__3;
lean_object* l_Lean_Delaborator_delabSort___closed__15;
uint8_t l_Array_anyRangeMAux___main___at_Lean_Delaborator_delabForall___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Delaborator_withAppFnArgs(lean_object*);
lean_object* lean_name_mk_string(lean_object*, lean_object*);
@ -260,6 +262,7 @@ lean_object* l___private_Init_Data_Array_Basic_3__iterateRevMAux___main___at_Lea
extern lean_object* l_Lean_numLitKind___closed__2;
lean_object* l_Lean_Level_getOffsetAux___main(lean_object*, lean_object*);
extern lean_object* l_Lean_Meta_evalNat___main___closed__6;
extern lean_object* l_Lean_mkAppStx___closed__6;
lean_object* l_Lean_Delaborator_withBindingBody___rarg___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_ReaderT_failure___at_Lean_Delaborator_DelabM_inhabited___spec__1(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_attrParamSyntaxToIdentifier(lean_object*);
@ -484,7 +487,6 @@ lean_object* l___regBuiltin_Lean_Delaborator_delabForall(lean_object*);
lean_object* l_Array_anyRangeMAux___main___at_Lean_Delaborator_hasIdent___main___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Delaborator_getExprKind___closed__29;
extern lean_object* l_Lean_PersistentEnvExtension_inhabited___rarg___closed__4;
extern lean_object* l_Lean_Parser_Term_sortApp___elambda__1___closed__2;
lean_object* l_Lean_Delaborator_getExprKind___closed__25;
lean_object* l_Array_anyRangeMAux___main___at_Lean_Delaborator_delabForall___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Level_quote___main___lambda__8(lean_object*, lean_object*, lean_object*, lean_object*);
@ -8197,22 +8199,18 @@ return x_5;
lean_object* _init_l_Lean_Delaborator_delabSort___closed__1() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_SourceInfo_inhabited___closed__1;
x_2 = l_Lean_Parser_Term_sort___elambda__1___closed__5;
x_3 = lean_alloc_ctor(2, 2, 0);
lean_ctor_set(x_3, 0, x_1);
lean_ctor_set(x_3, 1, x_2);
return x_3;
lean_object* x_1;
x_1 = lean_mk_string("sortApp");
return x_1;
}
}
lean_object* _init_l_Lean_Delaborator_delabSort___closed__2() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Array_empty___closed__1;
x_1 = l_Lean_mkAppStx___closed__6;
x_2 = l_Lean_Delaborator_delabSort___closed__1;
x_3 = lean_array_push(x_1, x_2);
x_3 = lean_name_mk_string(x_1, x_2);
return x_3;
}
}
@ -8220,9 +8218,9 @@ lean_object* _init_l_Lean_Delaborator_delabSort___closed__3() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_Term_sort___elambda__1___closed__2;
x_2 = l_Lean_Delaborator_delabSort___closed__2;
x_3 = lean_alloc_ctor(1, 2, 0);
x_1 = l_Lean_SourceInfo_inhabited___closed__1;
x_2 = l_Lean_Parser_Term_sort___elambda__1___closed__5;
x_3 = lean_alloc_ctor(2, 2, 0);
lean_ctor_set(x_3, 0, x_1);
lean_ctor_set(x_3, 1, x_2);
return x_3;
@ -8242,9 +8240,9 @@ lean_object* _init_l_Lean_Delaborator_delabSort___closed__5() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_SourceInfo_inhabited___closed__1;
x_2 = l_Lean_Parser_Term_prop___elambda__1___closed__5;
x_3 = lean_alloc_ctor(2, 2, 0);
x_1 = l_Lean_Parser_Term_sort___elambda__1___closed__2;
x_2 = l_Lean_Delaborator_delabSort___closed__4;
x_3 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_3, 0, x_1);
lean_ctor_set(x_3, 1, x_2);
return x_3;
@ -8264,9 +8262,9 @@ lean_object* _init_l_Lean_Delaborator_delabSort___closed__7() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_Term_prop___elambda__1___closed__2;
x_2 = l_Lean_Delaborator_delabSort___closed__6;
x_3 = lean_alloc_ctor(1, 2, 0);
x_1 = l_Lean_SourceInfo_inhabited___closed__1;
x_2 = l_Lean_Parser_Term_prop___elambda__1___closed__5;
x_3 = lean_alloc_ctor(2, 2, 0);
lean_ctor_set(x_3, 0, x_1);
lean_ctor_set(x_3, 1, x_2);
return x_3;
@ -8275,14 +8273,36 @@ return x_3;
lean_object* _init_l_Lean_Delaborator_delabSort___closed__8() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Array_empty___closed__1;
x_2 = l_Lean_Delaborator_delabSort___closed__7;
x_3 = lean_array_push(x_1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Delaborator_delabSort___closed__9() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_Term_prop___elambda__1___closed__2;
x_2 = l_Lean_Delaborator_delabSort___closed__8;
x_3 = lean_alloc_ctor(1, 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_Delaborator_delabSort___closed__10() {
_start:
{
lean_object* x_1; lean_object* x_2;
x_1 = l_Lean_Delaborator_delabSort___closed__7;
x_1 = l_Lean_Delaborator_delabSort___closed__9;
x_2 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_2, 0, x_1);
return x_2;
}
}
lean_object* _init_l_Lean_Delaborator_delabSort___closed__9() {
lean_object* _init_l_Lean_Delaborator_delabSort___closed__11() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
@ -8294,44 +8314,44 @@ lean_ctor_set(x_3, 1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Delaborator_delabSort___closed__10() {
lean_object* _init_l_Lean_Delaborator_delabSort___closed__12() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Array_empty___closed__1;
x_2 = l_Lean_Delaborator_delabSort___closed__9;
x_2 = l_Lean_Delaborator_delabSort___closed__11;
x_3 = lean_array_push(x_1, x_2);
return x_3;
}
}
lean_object* _init_l_Lean_Delaborator_delabSort___closed__11() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_Term_type___elambda__1___closed__2;
x_2 = l_Lean_Delaborator_delabSort___closed__10;
x_3 = lean_alloc_ctor(1, 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_Delaborator_delabSort___closed__12() {
_start:
{
lean_object* x_1; lean_object* x_2;
x_1 = l_Lean_Delaborator_delabSort___closed__11;
x_2 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_2, 0, x_1);
return x_2;
}
}
lean_object* _init_l_Lean_Delaborator_delabSort___closed__13() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_Parser_Term_type___elambda__1___closed__2;
x_2 = l_Lean_Delaborator_delabSort___closed__12;
x_3 = lean_alloc_ctor(1, 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_Delaborator_delabSort___closed__14() {
_start:
{
lean_object* x_1; lean_object* x_2;
x_1 = l_Lean_Delaborator_delabSort___closed__13;
x_2 = lean_alloc_ctor(1, 1, 0);
lean_ctor_set(x_2, 0, x_1);
return x_2;
}
}
lean_object* _init_l_Lean_Delaborator_delabSort___closed__15() {
_start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Array_empty___closed__1;
x_2 = l_Lean_Delaborator_delabSort___closed__11;
x_2 = l_Lean_Delaborator_delabSort___closed__13;
x_3 = lean_array_push(x_1, x_2);
return x_3;
}
@ -8377,7 +8397,7 @@ lean_object* x_20; lean_object* x_21;
lean_dec(x_10);
lean_dec(x_9);
lean_dec(x_7);
x_20 = l_Lean_Delaborator_delabSort___closed__8;
x_20 = l_Lean_Delaborator_delabSort___closed__10;
x_21 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_21, 0, x_20);
lean_ctor_set(x_21, 1, x_8);
@ -8395,7 +8415,7 @@ lean_dec(x_22);
lean_dec(x_10);
lean_dec(x_9);
lean_dec(x_7);
x_23 = l_Lean_Delaborator_delabSort___closed__12;
x_23 = l_Lean_Delaborator_delabSort___closed__14;
x_24 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_24, 0, x_23);
lean_ctor_set(x_24, 1, x_8);
@ -8425,9 +8445,9 @@ if (x_27 == 0)
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;
x_28 = lean_ctor_get(x_25, 0);
x_29 = l_Lean_Level_quote___main(x_28);
x_30 = l_Lean_Delaborator_delabSort___closed__13;
x_30 = l_Lean_Delaborator_delabSort___closed__15;
x_31 = lean_array_push(x_30, x_29);
x_32 = l_Lean_Parser_Term_sortApp___elambda__1___closed__2;
x_32 = l_Lean_Delaborator_delabSort___closed__2;
x_33 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_33, 0, x_32);
lean_ctor_set(x_33, 1, x_31);
@ -8444,9 +8464,9 @@ x_35 = lean_ctor_get(x_25, 0);
lean_inc(x_35);
lean_dec(x_25);
x_36 = l_Lean_Level_quote___main(x_35);
x_37 = l_Lean_Delaborator_delabSort___closed__13;
x_37 = l_Lean_Delaborator_delabSort___closed__15;
x_38 = lean_array_push(x_37, x_36);
x_39 = l_Lean_Parser_Term_sortApp___elambda__1___closed__2;
x_39 = l_Lean_Delaborator_delabSort___closed__2;
x_40 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_40, 0, x_39);
lean_ctor_set(x_40, 1, x_38);
@ -8483,9 +8503,9 @@ if (x_45 == 0)
lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52;
x_46 = lean_ctor_get(x_43, 0);
x_47 = l_Lean_Level_quote___main(x_46);
x_48 = l_Lean_Delaborator_delabSort___closed__13;
x_48 = l_Lean_Delaborator_delabSort___closed__15;
x_49 = lean_array_push(x_48, x_47);
x_50 = l_Lean_Parser_Term_sortApp___elambda__1___closed__2;
x_50 = l_Lean_Delaborator_delabSort___closed__2;
x_51 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_51, 0, x_50);
lean_ctor_set(x_51, 1, x_49);
@ -8502,9 +8522,9 @@ x_53 = lean_ctor_get(x_43, 0);
lean_inc(x_53);
lean_dec(x_43);
x_54 = l_Lean_Level_quote___main(x_53);
x_55 = l_Lean_Delaborator_delabSort___closed__13;
x_55 = l_Lean_Delaborator_delabSort___closed__15;
x_56 = lean_array_push(x_55, x_54);
x_57 = l_Lean_Parser_Term_sortApp___elambda__1___closed__2;
x_57 = l_Lean_Delaborator_delabSort___closed__2;
x_58 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_58, 0, x_57);
lean_ctor_set(x_58, 1, x_56);
@ -8523,9 +8543,9 @@ block_19:
lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18;
lean_dec(x_11);
x_12 = l_Lean_Level_quote___main(x_10);
x_13 = l_Lean_Delaborator_delabSort___closed__4;
x_13 = l_Lean_Delaborator_delabSort___closed__6;
x_14 = lean_array_push(x_13, x_12);
x_15 = l_Lean_Parser_Term_sortApp___elambda__1___closed__2;
x_15 = l_Lean_Delaborator_delabSort___closed__2;
x_16 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_16, 0, x_15);
lean_ctor_set(x_16, 1, x_14);
@ -18861,6 +18881,10 @@ l_Lean_Delaborator_delabSort___closed__12 = _init_l_Lean_Delaborator_delabSort__
lean_mark_persistent(l_Lean_Delaborator_delabSort___closed__12);
l_Lean_Delaborator_delabSort___closed__13 = _init_l_Lean_Delaborator_delabSort___closed__13();
lean_mark_persistent(l_Lean_Delaborator_delabSort___closed__13);
l_Lean_Delaborator_delabSort___closed__14 = _init_l_Lean_Delaborator_delabSort___closed__14();
lean_mark_persistent(l_Lean_Delaborator_delabSort___closed__14);
l_Lean_Delaborator_delabSort___closed__15 = _init_l_Lean_Delaborator_delabSort___closed__15();
lean_mark_persistent(l_Lean_Delaborator_delabSort___closed__15);
l___regBuiltin_Lean_Delaborator_delabSort___closed__1 = _init_l___regBuiltin_Lean_Delaborator_delabSort___closed__1();
lean_mark_persistent(l___regBuiltin_Lean_Delaborator_delabSort___closed__1);
res = l___regBuiltin_Lean_Delaborator_delabSort(lean_io_mk_world());

View file

@ -17,7 +17,6 @@ lean_object* l_Lean_Elab_Term_addNamedArg___closed__5;
lean_object* l_Lean_Elab_Term_getEnv___rarg(lean_object*);
lean_object* l___private_Lean_Elab_App_7__hasOnlyTypeMVar___boxed(lean_object*, lean_object*);
lean_object* l___private_Lean_Elab_App_18__elabAppLValsAux___main___closed__2;
lean_object* l___regBuiltin_Lean_Elab_Term_elabSortApp(lean_object*);
extern lean_object* l_Lean_fieldIdxKind;
lean_object* l_Lean_Expr_mvarId_x21(lean_object*);
lean_object* l_Lean_registerTraceClass(lean_object*, lean_object*);
@ -109,9 +108,7 @@ lean_object* l___private_Lean_Elab_App_18__elabAppLValsAux___main___closed__1;
lean_object* l___regBuiltin_Lean_Elab_Term_elabId(lean_object*);
lean_object* l_Lean_Elab_Term_addNamedArg___closed__6;
lean_object* l___private_Lean_Elab_App_13__resolveLValAux___closed__2;
extern lean_object* l_Lean_Parser_Term_sort___elambda__1___closed__2;
lean_object* l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___regBuiltin_Lean_Elab_Term_elabSortApp___closed__1;
lean_object* l___private_Lean_Elab_App_21__elabAppFn___main(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_getMainModule___rarg(lean_object*);
lean_object* l___regBuiltin_Lean_Elab_Term_elabArrayRef(lean_object*);
@ -277,13 +274,10 @@ uint8_t l_Array_anyRangeMAux___main___at_Lean_Elab_Term_addNamedArg___spec__1(le
extern lean_object* l_Lean_Syntax_inhabited;
extern lean_object* l_Lean_mkAppStx___closed__5;
uint8_t l_Lean_BinderInfo_beq(uint8_t, uint8_t);
lean_object* l_Lean_Elab_Term_elabSortApp___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Elab_App_10__elabAppArgsAux___main___closed__1;
lean_object* l___private_Lean_Elab_App_13__resolveLValAux___closed__16;
lean_object* l___private_Lean_Elab_App_10__elabAppArgsAux___main___closed__2;
lean_object* l_Lean_mkLevelSucc(lean_object*);
lean_object* l_Lean_Elab_Term_getLCtx(lean_object*, lean_object*);
lean_object* l_Lean_Elab_Term_elabSortApp(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Expr_getRevArg_x21___main(lean_object*, lean_object*);
lean_object* l___private_Lean_Elab_App_20__elabAppFnId___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_mkApp(lean_object*, lean_object*);
@ -390,7 +384,6 @@ lean_object* l___private_Lean_Elab_App_11__elabAppArgs___boxed(lean_object*, lea
lean_object* l_Array_insertAt___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_findField_x3f___main(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Elab_App_13__resolveLValAux___closed__12;
extern lean_object* l_Lean_Parser_Term_sortApp___elambda__1___closed__2;
lean_object* l_Lean_Name_components(lean_object*);
lean_object* l_Array_umapMAux___main___at___private_Lean_Elab_App_25__elabAppAux___spec__1(lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_mkAppStx___closed__1;
@ -17729,132 +17722,6 @@ x_5 = l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(x_2, x_3, x_4, x_1);
return x_5;
}
}
lean_object* l_Lean_Elab_Term_elabSortApp(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
_start:
{
lean_object* x_5; lean_object* x_6; lean_object* x_7;
x_5 = lean_unsigned_to_nat(1u);
x_6 = l_Lean_Syntax_getArg(x_1, x_5);
x_7 = l_Lean_Elab_Term_elabLevel(x_6, x_3, x_4);
if (lean_obj_tag(x_7) == 0)
{
uint8_t x_8;
x_8 = !lean_is_exclusive(x_7);
if (x_8 == 0)
{
lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14;
x_9 = lean_ctor_get(x_7, 0);
x_10 = lean_unsigned_to_nat(0u);
x_11 = l_Lean_Syntax_getArg(x_1, x_10);
x_12 = l_Lean_Syntax_getKind(x_11);
x_13 = l_Lean_Parser_Term_sort___elambda__1___closed__2;
x_14 = lean_name_eq(x_12, x_13);
lean_dec(x_12);
if (x_14 == 0)
{
lean_object* x_15; lean_object* x_16;
x_15 = l_Lean_mkLevelSucc(x_9);
x_16 = l_Lean_mkSort(x_15);
lean_ctor_set(x_7, 0, x_16);
return x_7;
}
else
{
lean_object* x_17;
x_17 = l_Lean_mkSort(x_9);
lean_ctor_set(x_7, 0, x_17);
return x_7;
}
}
else
{
lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; uint8_t x_24;
x_18 = lean_ctor_get(x_7, 0);
x_19 = lean_ctor_get(x_7, 1);
lean_inc(x_19);
lean_inc(x_18);
lean_dec(x_7);
x_20 = lean_unsigned_to_nat(0u);
x_21 = l_Lean_Syntax_getArg(x_1, x_20);
x_22 = l_Lean_Syntax_getKind(x_21);
x_23 = l_Lean_Parser_Term_sort___elambda__1___closed__2;
x_24 = lean_name_eq(x_22, x_23);
lean_dec(x_22);
if (x_24 == 0)
{
lean_object* x_25; lean_object* x_26; lean_object* x_27;
x_25 = l_Lean_mkLevelSucc(x_18);
x_26 = l_Lean_mkSort(x_25);
x_27 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_27, 0, x_26);
lean_ctor_set(x_27, 1, x_19);
return x_27;
}
else
{
lean_object* x_28; lean_object* x_29;
x_28 = l_Lean_mkSort(x_18);
x_29 = lean_alloc_ctor(0, 2, 0);
lean_ctor_set(x_29, 0, x_28);
lean_ctor_set(x_29, 1, x_19);
return x_29;
}
}
}
else
{
uint8_t x_30;
x_30 = !lean_is_exclusive(x_7);
if (x_30 == 0)
{
return x_7;
}
else
{
lean_object* x_31; lean_object* x_32; lean_object* x_33;
x_31 = lean_ctor_get(x_7, 0);
x_32 = lean_ctor_get(x_7, 1);
lean_inc(x_32);
lean_inc(x_31);
lean_dec(x_7);
x_33 = lean_alloc_ctor(1, 2, 0);
lean_ctor_set(x_33, 0, x_31);
lean_ctor_set(x_33, 1, x_32);
return x_33;
}
}
}
}
lean_object* l_Lean_Elab_Term_elabSortApp___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
_start:
{
lean_object* x_5;
x_5 = l_Lean_Elab_Term_elabSortApp(x_1, x_2, x_3, x_4);
lean_dec(x_3);
lean_dec(x_2);
lean_dec(x_1);
return x_5;
}
}
lean_object* _init_l___regBuiltin_Lean_Elab_Term_elabSortApp___closed__1() {
_start:
{
lean_object* x_1;
x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Term_elabSortApp___boxed), 4, 0);
return x_1;
}
}
lean_object* l___regBuiltin_Lean_Elab_Term_elabSortApp(lean_object* x_1) {
_start:
{
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_2 = l_Lean_Elab_Term_termElabAttribute;
x_3 = l_Lean_Parser_Term_sortApp___elambda__1___closed__2;
x_4 = l___regBuiltin_Lean_Elab_Term_elabSortApp___closed__1;
x_5 = l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(x_2, x_3, x_4, x_1);
return x_5;
}
}
lean_object* l___private_Lean_Elab_App_27__regTraceClasses(lean_object* x_1) {
_start:
{
@ -18167,11 +18034,6 @@ lean_mark_persistent(l___regBuiltin_Lean_Elab_Term_elabRawIdent___closed__1);
res = l___regBuiltin_Lean_Elab_Term_elabRawIdent(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
l___regBuiltin_Lean_Elab_Term_elabSortApp___closed__1 = _init_l___regBuiltin_Lean_Elab_Term_elabSortApp___closed__1();
lean_mark_persistent(l___regBuiltin_Lean_Elab_Term_elabSortApp___closed__1);
res = l___regBuiltin_Lean_Elab_Term_elabSortApp(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);
res = l___private_Lean_Elab_App_27__regTraceClasses(lean_io_mk_world());
if (lean_io_result_is_error(res)) return res;
lean_dec_ref(res);

File diff suppressed because it is too large Load diff

View file

@ -34,7 +34,6 @@ lean_object* l_IO_ofExcept___at___private_Lean_Parser_Parser_15__addBuiltinParse
lean_object* l_Lean_Parser_symbolAux___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Parser_hashOrelse;
lean_object* l_RBNode_ins___main___at_Lean_Parser_TokenMap_insert___spec__7___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_checkRBPGreater___elambda__1(lean_object*, lean_object*, lean_object*, lean_object*);
size_t l_USize_add(size_t, size_t);
lean_object* l_Lean_Parser_manyAux___main___closed__1;
lean_object* l_Lean_Parser_numLit___elambda__1___closed__2;
@ -135,6 +134,7 @@ lean_object* l_Lean_Parser_hexNumberFn(lean_object*, lean_object*, lean_object*)
lean_object* l_Array_foldSepBy___rarg___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_strLitFnAux(lean_object*, lean_object*, lean_object*);
uint8_t l_List_elem___main___at_Lean_NameHashSet_insert___spec__2(lean_object*, lean_object*);
lean_object* l_Lean_Parser_getTokenLbp_x3f___boxed(lean_object*, lean_object*);
lean_object* l___private_Lean_Parser_Parser_10__noImmediateColon___elambda__1(lean_object*, lean_object*);
lean_object* l_Array_iterateMAux___main___at_Lean_Parser_SyntaxNodeKindSet_insert___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_ParserState_next(lean_object*, lean_object*, lean_object*);
@ -162,7 +162,6 @@ lean_object* l_Lean_Parser_ParserState_pushSyntax(lean_object*, lean_object*);
lean_object* l_Lean_Parser_mkAntiquot___closed__17;
lean_object* l_Lean_Syntax_foldSepArgsM(lean_object*, lean_object*);
lean_object* l_Lean_Parser_builtinParserCategoriesRef;
lean_object* l_Lean_Parser_checkRBPGreater(lean_object*, lean_object*);
lean_object* lean_environment_find(lean_object*, lean_object*);
lean_object* l_Lean_Parser_parserExtension;
lean_object* l_Lean_Parser_unquotedSymbolFn___closed__1;
@ -175,6 +174,7 @@ lean_object* l_Lean_Parser_parserExtension___closed__2;
uint8_t l_Lean_Parser_isLitKind(lean_object*);
lean_object* l_Lean_Parser_takeUntilFn___main___at_Lean_Parser_whitespace___main___spec__1(lean_object*, lean_object*);
lean_object* l___private_Lean_Parser_Parser_22__ParserExtension_addImported___boxed(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_checkRbpLtFn___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_satisfyFn___at_Lean_Parser_binNumberFn___spec__1(lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_fieldIdxKind___closed__1;
lean_object* l_Lean_Parser_antiquotNestedExpr___elambda__1___closed__1;
@ -185,6 +185,7 @@ lean_object* l_Lean_Parser_TokenConfig_HasBeq___closed__1;
lean_object* l_Lean_Parser_categoryParserOfStackFn___closed__2;
lean_object* lean_io_mk_ref(lean_object*, lean_object*);
lean_object* l_Lean_Parser_checkColGe(lean_object*, lean_object*);
lean_object* l_Lean_Parser_checkRbpLtFn(lean_object*, lean_object*, lean_object*, lean_object*);
uint8_t l___private_Lean_Parser_Parser_4__isToken(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Parser_Parser_25__ParserAttribute_add___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_nonReservedSymbolFn(lean_object*, lean_object*, lean_object*);
@ -305,7 +306,6 @@ lean_object* l_Lean_Parser_ident___closed__1;
lean_object* l_Array_foldlStepMAux___main___at_Lean_Syntax_foldSepArgsM___spec__1___rarg___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_finishCommentBlock___main(lean_object*, lean_object*, lean_object*);
lean_object* lean_nat_add(lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux___main___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_indexed___rarg(lean_object*, lean_object*, lean_object*, uint8_t);
uint8_t l_Lean_Parser_takeWhileFn___lambda__1(lean_object*, uint32_t);
uint32_t l_Lean_Parser_getNext(lean_object*, lean_object*);
@ -352,6 +352,7 @@ lean_object* l_Lean_Syntax_forArgsM(lean_object*);
lean_object* l_Lean_Parser_throwUnknownParserCategory(lean_object*);
lean_object* l___private_Lean_Parser_Parser_6__nameLitAux(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_mkAntiquot___closed__15;
lean_object* l_Lean_Parser_checkRbpLt___elambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_decimalNumberFn(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_PrattParsingTables_inhabited___closed__1;
lean_object* l_Lean_Parser_compileParserDescr___main___closed__3;
@ -495,7 +496,6 @@ lean_object* l_Lean_Parser_identFnAux___main(lean_object*, lean_object*, lean_ob
lean_object* lean_array_get(lean_object*, lean_object*, lean_object*);
uint8_t l_Lean_Parser_tryAnti(lean_object*, lean_object*);
extern lean_object* l_Lean_numLitKind___closed__1;
lean_object* l_Lean_Parser_checkRBPGreater___elambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_optionaInfo(lean_object*);
lean_object* l_Lean_Parser_FirstTokens_seq(lean_object*, lean_object*);
lean_object* l___private_Lean_Parser_Parser_13__throwParserCategoryAlreadyDefined___rarg___closed__1;
@ -598,6 +598,7 @@ lean_object* l_Lean_Parser_antiquotNestedExpr___elambda__1___closed__10;
lean_object* l_Lean_Parser_FirstTokens_merge(lean_object*, lean_object*);
lean_object* l_Lean_Parser_strLit___elambda__1___closed__1;
lean_object* l_Lean_Parser_pushNone___elambda__1___rarg(lean_object*);
lean_object* l_Lean_Parser_checkRbpLe(lean_object*, lean_object*);
lean_object* lean_eval_const(lean_object*, lean_object*);
lean_object* l_Lean_Parser_mkParserAttributeImpl(lean_object*, lean_object*);
lean_object* l_Lean_Parser_fieldIdx___closed__5;
@ -724,6 +725,7 @@ lean_object* l_Lean_registerEnvExtensionUnsafe___at_Lean_Parser_mkParserExtensio
lean_object* l_Lean_Parser_mkAntiquot___elambda__2(lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_registerTagAttribute___lambda__4___closed__2;
lean_object* l_Lean_Parser_categoryParserFn(lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_checkRbpLe___boxed(lean_object*, lean_object*);
lean_object* l_Lean_ParametricAttribute_setParam___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Array_foldlStepMAux___main___at_Array_foldSepByM___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l___private_Lean_Environment_5__envExtensionsRef;
@ -786,6 +788,7 @@ lean_object* l_Lean_Parser_mkAntiquot___closed__16;
lean_object* l___private_Lean_Parser_Parser_2__sepByFnAux___main___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Parser_Parser_20__updateBuiltinTokens___closed__1;
lean_object* l_Lean_Parser_compileParserDescr___main___closed__2;
lean_object* l_Lean_Parser_getTokenLbp_x3f(lean_object*, lean_object*);
lean_object* l_Lean_Parser_FirstTokens_HasToString___closed__1;
lean_object* l_Lean_Parser_FirstTokens_HasToString;
lean_object* l_Array_iterateMAux___main___at___private_Lean_Parser_Parser_25__ParserAttribute_add___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
@ -844,7 +847,6 @@ lean_object* l_Lean_Parser_quotedSymbolFn___boxed(lean_object*, lean_object*);
lean_object* l_Lean_Name_toExprAux___main(lean_object*);
uint8_t l_PersistentHashMap_containsAtAux___main___at_Lean_Parser_isValidSyntaxNodeKind___spec__3(lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Parser_Parser_10__noImmediateColon___closed__2;
lean_object* l_Lean_Parser_checkRBPGreaterFn___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_mkParserExtension___closed__5;
lean_object* l_Lean_Parser_dollarSymbol___closed__3;
lean_object* l_Lean_Parser_satisfySymbolFn(lean_object*, lean_object*, lean_object*, lean_object*);
@ -865,7 +867,7 @@ lean_object* l_Lean_Parser_epsilonInfo___closed__3;
lean_object* l_Lean_Parser_unquotedSymbol;
lean_object* l___private_Lean_Parser_Parser_1__expectedToString___main(lean_object*);
lean_object* l_Lean_Parser_hashOrelse___closed__1;
lean_object* l_Lean_Parser_checkRBPGreaterFn(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_checkRbpLt___elambda__1(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Parser_nonReservedSymbolInfo___elambda__2___boxed(lean_object*);
lean_object* l_Lean_Parser_many1Indent(lean_object*, lean_object*);
lean_object* l_Lean_Parser_takeUntilFn___main___at_Lean_Parser_whitespace___main___spec__1___boxed(lean_object*, lean_object*);
@ -932,6 +934,7 @@ lean_object* l_Lean_Syntax_forSepArgsM___rarg___boxed(lean_object*, lean_object*
lean_object* l_Lean_Parser_rawFn(lean_object*, uint8_t, lean_object*, lean_object*);
lean_object* l_Lean_Parser_charLitFn___closed__1;
lean_object* l_Lean_Parser_dollarSymbol___elambda__1___closed__4;
lean_object* l_Lean_Parser_checkRbpLt(lean_object*, lean_object*);
lean_object* l_Lean_Parser_compileParserDescr___main(lean_object*, lean_object*);
lean_object* l_Lean_Parser_regBuiltinTermParserAttr(lean_object*);
lean_object* l_Lean_Parser_nodeFn(lean_object*, lean_object*, lean_object*, lean_object*);
@ -1100,6 +1103,7 @@ lean_object* l_Lean_Parser_compileParserDescr___main___closed__4;
lean_object* l_Lean_Parser_Parser_inhabited___closed__1;
lean_object* l_Lean_Syntax_getTailInfo___main(lean_object*);
lean_object* l_Lean_Parser_categoryParserOfStack___elambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg(lean_object*, lean_object*, lean_object*);
lean_object* l_PersistentHashMap_insertAtCollisionNodeAux___main___at_Lean_Parser_SyntaxNodeKindSet_insert___spec__3(lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_registerTagAttribute___lambda__4___closed__1;
lean_object* l_List_foldlM___main___at___private_Lean_Parser_Parser_25__ParserAttribute_add___spec__1(lean_object*, lean_object*, lean_object*, lean_object*);
@ -11026,48 +11030,48 @@ lean_dec(x_1);
return x_4;
}
}
lean_object* l_Lean_Parser_checkRBPGreaterFn(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
lean_object* l_Lean_Parser_checkRbpLtFn(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
_start:
{
lean_object* x_5; uint8_t x_6;
x_5 = lean_ctor_get(x_3, 1);
x_6 = lean_nat_dec_lt(x_1, x_5);
x_6 = lean_nat_dec_lt(x_5, x_1);
if (x_6 == 0)
{
lean_dec(x_2);
return x_4;
}
else
{
lean_object* x_7;
x_7 = l_Lean_Parser_ParserState_mkUnexpectedError(x_4, x_2);
return x_7;
}
else
{
lean_dec(x_2);
return x_4;
}
}
lean_object* l_Lean_Parser_checkRBPGreaterFn___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
}
lean_object* l_Lean_Parser_checkRbpLtFn___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
_start:
{
lean_object* x_5;
x_5 = l_Lean_Parser_checkRBPGreaterFn(x_1, x_2, x_3, x_4);
x_5 = l_Lean_Parser_checkRbpLtFn(x_1, x_2, x_3, x_4);
lean_dec(x_3);
lean_dec(x_1);
return x_5;
}
}
lean_object* l_Lean_Parser_checkRBPGreater___elambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
lean_object* l_Lean_Parser_checkRbpLt___elambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
_start:
{
lean_object* x_5;
x_5 = l_Lean_Parser_checkRBPGreaterFn(x_1, x_2, x_3, x_4);
x_5 = l_Lean_Parser_checkRbpLtFn(x_1, x_2, x_3, x_4);
return x_5;
}
}
lean_object* l_Lean_Parser_checkRBPGreater(lean_object* x_1, lean_object* x_2) {
lean_object* l_Lean_Parser_checkRbpLt(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_3 = lean_alloc_closure((void*)(l_Lean_Parser_checkRBPGreater___elambda__1___boxed), 4, 2);
x_3 = lean_alloc_closure((void*)(l_Lean_Parser_checkRbpLt___elambda__1___boxed), 4, 2);
lean_closure_set(x_3, 0, x_1);
lean_closure_set(x_3, 1, x_2);
x_4 = l_Lean_Parser_epsilonInfo;
@ -11077,16 +11081,35 @@ lean_ctor_set(x_5, 1, x_3);
return x_5;
}
}
lean_object* l_Lean_Parser_checkRBPGreater___elambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
lean_object* l_Lean_Parser_checkRbpLt___elambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
_start:
{
lean_object* x_5;
x_5 = l_Lean_Parser_checkRBPGreater___elambda__1(x_1, x_2, x_3, x_4);
x_5 = l_Lean_Parser_checkRbpLt___elambda__1(x_1, x_2, x_3, x_4);
lean_dec(x_3);
lean_dec(x_1);
return x_5;
}
}
lean_object* l_Lean_Parser_checkRbpLe(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_3 = lean_unsigned_to_nat(1u);
x_4 = lean_nat_add(x_1, x_3);
x_5 = l_Lean_Parser_checkRbpLt(x_4, x_2);
return x_5;
}
}
lean_object* l_Lean_Parser_checkRbpLe___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = l_Lean_Parser_checkRbpLe(x_1, x_2);
lean_dec(x_1);
return x_3;
}
}
lean_object* l_Lean_Parser_mkAtomicInfo___elambda__1(lean_object* x_1) {
_start:
{
@ -29315,7 +29338,7 @@ if (x_7 == 0)
lean_object* x_8; lean_object* x_9;
x_8 = lean_unsigned_to_nat(0u);
lean_inc(x_1);
x_9 = l___private_Lean_Data_Trie_3__findAux___main___rarg(x_3, x_1, x_8);
x_9 = l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg(x_3, x_1, x_8);
if (lean_obj_tag(x_9) == 0)
{
lean_object* x_10; lean_object* x_11;
@ -35466,6 +35489,42 @@ lean_dec(x_1);
return x_2;
}
}
lean_object* l_Lean_Parser_getTokenLbp_x3f(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3; lean_object* x_4; lean_object* x_5;
x_3 = l_Lean_Parser_getTokenTable(x_1);
x_4 = lean_unsigned_to_nat(0u);
x_5 = l___private_Lean_Data_Trie_3__findAux_x3f___main___rarg(x_2, x_3, x_4);
if (lean_obj_tag(x_5) == 0)
{
lean_object* x_6;
x_6 = lean_box(0);
return x_6;
}
else
{
lean_object* x_7; lean_object* x_8;
x_7 = lean_ctor_get(x_5, 0);
lean_inc(x_7);
lean_dec(x_5);
x_8 = lean_ctor_get(x_7, 1);
lean_inc(x_8);
lean_dec(x_7);
return x_8;
}
}
}
lean_object* l_Lean_Parser_getTokenLbp_x3f___boxed(lean_object* x_1, lean_object* x_2) {
_start:
{
lean_object* x_3;
x_3 = l_Lean_Parser_getTokenLbp_x3f(x_1, x_2);
lean_dec(x_2);
lean_dec(x_1);
return x_3;
}
}
lean_object* l_Lean_Parser_mkInputContext(lean_object* x_1, lean_object* x_2) {
_start:
{

File diff suppressed because it is too large Load diff

View file

@ -70,7 +70,6 @@ lean_object* l_Lean_PrettyPrinter_Parenthesizer_identNoAntiquot_parenthesizer___
lean_object* l___regBuiltin_Lean_PrettyPrinter_Parenthesizer_strLitNoAntiquot_parenthesizer___closed__1;
lean_object* l___regBuiltin_Lean_PrettyPrinter_Parenthesizer_andthen_parenthesizer(lean_object*);
lean_object* l_Lean_PrettyPrinter_Parenthesizer_withPosition_parenthesizer___closed__1;
extern lean_object* l_Lean_Parser_Term_depArrow___elambda__1___closed__9;
uint8_t lean_name_eq(lean_object*, lean_object*);
lean_object* l_Lean_PrettyPrinter_Parenthesizer_evalNat(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_Syntax_Traverser_up(lean_object*);
@ -607,6 +606,7 @@ lean_object* l_Lean_PrettyPrinter_Parenthesizer_visitAntiquot___lambda__1(lean_o
lean_object* l_Lean_PrettyPrinter_Parenthesizer_symbolNoWsAux_parenthesizer___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
lean_object* l_Lean_PrettyPrinter_mkParenthesizerAttribute___closed__6;
lean_object* l_Nat_forMAux___main___at_Lean_PrettyPrinter_Parenthesizer_visit___main___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
extern lean_object* l_Lean_Parser_Term_depArrow___elambda__1___closed__11;
extern lean_object* l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
extern lean_object* l_Lean_mkAppStx___closed__2;
lean_object* l___private_Lean_PrettyPrinter_Parenthesizer_1__regTraceClasses(lean_object*);
@ -12502,7 +12502,7 @@ _start:
{
lean_object* x_1; lean_object* x_2; lean_object* x_3;
x_1 = l_Lean_PrettyPrinter_Parenthesizer_depArrow_x27___elambda__1___closed__3;
x_2 = l_Lean_Parser_Term_depArrow___elambda__1___closed__9;
x_2 = l_Lean_Parser_Term_depArrow___elambda__1___closed__11;
x_3 = lean_string_append(x_1, x_2);
return x_3;
}
@ -12548,7 +12548,7 @@ 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;
x_9 = l_Lean_PrettyPrinter_Parenthesizer_depArrow_x27___elambda__1___closed__1;
x_10 = l_Lean_Parser_Term_depArrow___elambda__1___closed__9;
x_10 = l_Lean_Parser_Term_depArrow___elambda__1___closed__11;
x_11 = l_Lean_PrettyPrinter_Parenthesizer_depArrow_x27___elambda__1___closed__6;
lean_inc(x_1);
x_12 = l_Lean_Parser_unicodeSymbolFnAux(x_9, x_10, x_11, x_1, x_7);
@ -12591,7 +12591,7 @@ _start:
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4;
x_1 = lean_box(0);
x_2 = l_Lean_PrettyPrinter_Parenthesizer_depArrow_x27___elambda__1___closed__1;
x_3 = l_Lean_Parser_Term_depArrow___elambda__1___closed__9;
x_3 = l_Lean_Parser_Term_depArrow___elambda__1___closed__11;
x_4 = l_Lean_Parser_unicodeSymbolInfo(x_2, x_3, x_1);
return x_4;
}