chore: update stage0
This commit is contained in:
parent
1e5a4729c3
commit
3972f011ee
11 changed files with 5893 additions and 3735 deletions
5
stage0/src/Init/Notation.lean
generated
5
stage0/src/Init/Notation.lean
generated
|
|
@ -278,7 +278,8 @@ syntax (name := constructor) "constructor" : tactic
|
|||
/--
|
||||
`case tag => tac` focuses on the goal with case name `tag` and solves it using `tac`, or else fails.
|
||||
`case tag x₁ ... xₙ => tac` additionally renames the `n` most recent hypotheses with inaccessible names to the given names. -/
|
||||
syntax (name := case) "case " ident (ident <|> "_")* " => " tacticSeq : tactic
|
||||
syntax (name := case) "case " (ident <|> "_") (ident <|> "_")* " => " tacticSeq : tactic
|
||||
|
||||
/-- `allGoals tac` runs `tac` on each goal, concatenating the resulting goals, if any. -/
|
||||
syntax (name := allGoals) "allGoals " tacticSeq : tactic
|
||||
/-- `anyGoals tac` applies the tactic `tac` to every goal, and succeeds if at least one application succeeds. -/
|
||||
|
|
@ -397,6 +398,8 @@ macro_rules
|
|||
|
||||
syntax "trivial" : tactic
|
||||
|
||||
syntax (name := split) "split " (term)? (location)? : tactic
|
||||
|
||||
macro_rules | `(tactic| trivial) => `(tactic| assumption)
|
||||
macro_rules | `(tactic| trivial) => `(tactic| rfl)
|
||||
macro_rules | `(tactic| trivial) => `(tactic| contradiction)
|
||||
|
|
|
|||
11
stage0/src/Lean/Elab/BuiltinCommand.lean
generated
11
stage0/src/Lean/Elab/BuiltinCommand.lean
generated
|
|
@ -275,9 +275,15 @@ unsafe def elabEvalUnsafe : CommandElab
|
|||
}
|
||||
Term.ensureNoUnassignedMVars decl
|
||||
addAndCompile decl
|
||||
let elabMetaEval : CommandElabM Unit := runTermElabM (some n) fun _ => do
|
||||
let elabEvalTerm : TermElabM Expr := do
|
||||
let e ← Term.elabTerm term none
|
||||
Term.synthesizeSyntheticMVarsNoPostponing
|
||||
if (← isProp e) then
|
||||
mkDecide e
|
||||
else
|
||||
return e
|
||||
let elabMetaEval : CommandElabM Unit := runTermElabM (some n) fun _ => do
|
||||
let e ← elabEvalTerm
|
||||
let e ← withLocalDeclD `env (mkConst ``Lean.Environment) fun env =>
|
||||
withLocalDeclD `opts (mkConst ``Lean.Options) fun opts => do
|
||||
let e ← mkAppM ``Lean.runMetaEval #[env, opts, e];
|
||||
|
|
@ -293,9 +299,8 @@ unsafe def elabEvalUnsafe : CommandElab
|
|||
let elabEval : CommandElabM Unit := runTermElabM (some n) fun _ => do
|
||||
-- fall back to non-meta eval if MetaEval hasn't been defined yet
|
||||
-- modify e to `runEval e`
|
||||
let e ← Term.elabTerm term none
|
||||
let e ← elabEvalTerm
|
||||
let e := mkSimpleThunk e
|
||||
Term.synthesizeSyntheticMVarsNoPostponing
|
||||
let e ← mkAppM ``Lean.runEval #[e]
|
||||
let env ← getEnv
|
||||
let act ← try addAndCompile e; evalConst (IO (String × Except IO.Error Unit)) n finally setEnv env
|
||||
|
|
|
|||
9
stage0/src/Lean/Elab/Tactic/BuiltinTactic.lean
generated
9
stage0/src/Lean/Elab/Tactic/BuiltinTactic.lean
generated
|
|
@ -244,9 +244,14 @@ def renameInaccessibles (mvarId : MVarId) (hs : Array Syntax) : TacticM MVarId :
|
|||
|
||||
@[builtinTactic «case»] def evalCase : Tactic
|
||||
| stx@`(tactic| case $tag $hs* =>%$arr $tac:tacticSeq) => do
|
||||
let tag := tag.getId
|
||||
let gs ← getUnsolvedGoals
|
||||
let some g ← findTag? gs tag | throwError "tag not found"
|
||||
let g ←
|
||||
if tag.isIdent then
|
||||
let tag := tag.getId
|
||||
let some g ← findTag? gs tag | throwError "tag not found"
|
||||
pure g
|
||||
else
|
||||
getMainGoal
|
||||
let gs := gs.erase g
|
||||
let g ← renameInaccessibles g hs
|
||||
setGoals [g]
|
||||
|
|
|
|||
48
stage0/src/Lean/Meta/Match/MatchEqs.lean
generated
48
stage0/src/Lean/Meta/Match/MatchEqs.lean
generated
|
|
@ -10,7 +10,35 @@ import Lean.Meta.Tactic.SplitIf
|
|||
|
||||
namespace Lean.Meta.Match
|
||||
|
||||
-- TODO enviroment extension for caching conditional equation lemmas and splitter for match auxiliary declarations.
|
||||
structure MatchEqns where
|
||||
eqnNames : Array Name
|
||||
splitterName : Name
|
||||
deriving Inhabited, Repr
|
||||
|
||||
structure MatchEqnsExtState where
|
||||
map : Std.PHashMap Name MatchEqns := {}
|
||||
deriving Inhabited
|
||||
|
||||
/- We generate the equations and splitter on demand, and do not save them on .olean files. -/
|
||||
builtin_initialize matchEqnsExt : EnvExtension MatchEqnsExtState ←
|
||||
registerEnvExtension (pure {})
|
||||
|
||||
private def registerMatchEqns (matchDeclName : Name) (matchEqns : MatchEqns) : CoreM Unit :=
|
||||
modifyEnv fun env => matchEqnsExt.modifyState env fun s => { s with map := s.map.insert matchDeclName matchEqns }
|
||||
|
||||
/-- Create a "unique" base name for conditional equations and splitter -/
|
||||
private partial def mkBaseNameFor (env : Environment) (matchDeclName : Name) : Name :=
|
||||
if !env.contains (matchDeclName ++ `splitter) then
|
||||
matchDeclName
|
||||
else
|
||||
go 1
|
||||
where
|
||||
go (idx : Nat) : Name :=
|
||||
let baseName := matchDeclName ++ (`_matchEqns).appendIndexAfter idx
|
||||
if !env.contains (baseName ++ `splitter) then
|
||||
baseName
|
||||
else
|
||||
go (idx + 1)
|
||||
|
||||
private def isMatchValue (e : Expr) : Bool :=
|
||||
e.isNatLit || e.isCharLit || e.isStringLit
|
||||
|
|
@ -227,12 +255,13 @@ where
|
|||
|
||||
/--
|
||||
Create conditional equations and splitter for the given match auxiliary declaration. -/
|
||||
partial def mkEquationsFor (matchDeclName : Name) : MetaM Unit := do
|
||||
-- TODO: do not assume `mkEquationsFor` was not already generated
|
||||
private partial def mkEquationsFor (matchDeclName : Name) : MetaM MatchEqns := do
|
||||
let baseName := mkBaseNameFor (← getEnv) matchDeclName
|
||||
let constInfo ← getConstInfo matchDeclName
|
||||
let us := constInfo.levelParams.map mkLevelParam
|
||||
let some matchInfo ← getMatcherInfo? matchDeclName | throwError "'{matchDeclName}' is not a matcher function"
|
||||
forallTelescopeReducing constInfo.type fun xs matchResultType => do
|
||||
let mut eqnNames := #[]
|
||||
let params := xs[:matchInfo.numParams]
|
||||
let motive := xs[matchInfo.getMotivePos]
|
||||
let alts := xs[xs.size - matchInfo.numAlts:]
|
||||
|
|
@ -242,6 +271,8 @@ partial def mkEquationsFor (matchDeclName : Name) : MetaM Unit := do
|
|||
let mut idx := 1
|
||||
let mut splitterAltTypes := #[]
|
||||
for alt in alts do
|
||||
let thmName := baseName ++ ((`eq).appendIndexAfter idx)
|
||||
eqnNames := eqnNames.push thmName
|
||||
let altType ← inferType alt
|
||||
trace[Meta.debug] ">> {altType}"
|
||||
let (notAlt, splitterAltType) ← forallTelescopeReducing altType fun ys altResultType => do
|
||||
|
|
@ -266,7 +297,6 @@ partial def mkEquationsFor (matchDeclName : Name) : MetaM Unit := do
|
|||
let thmType ← mkForallFVars (params ++ #[motive] ++ alts ++ ys) thmType
|
||||
let thmVal ← proveCondEqThm matchDeclName thmType
|
||||
trace[Meta.debug] "thmVal: {thmVal}"
|
||||
let thmName := matchDeclName ++ ((`eq).appendIndexAfter idx)
|
||||
addDecl <| Declaration.thmDecl {
|
||||
name := thmName
|
||||
levelParams := constInfo.levelParams
|
||||
|
|
@ -286,13 +316,21 @@ partial def mkEquationsFor (matchDeclName : Name) : MetaM Unit := do
|
|||
let template ← mkAppN (mkConst constInfo.name us) (params ++ #[motive] ++ discrs ++ alts)
|
||||
let template ← deltaExpand template (. == constInfo.name)
|
||||
let splitterVal ← mkLambdaFVars splitterParams (← mkSplitterProof matchDeclName template alts altsNew)
|
||||
let splitterName := matchDeclName ++ `splitter
|
||||
let splitterName := baseName ++ `splitter
|
||||
addDecl <| Declaration.thmDecl {
|
||||
name := splitterName
|
||||
levelParams := constInfo.levelParams
|
||||
type := splitterType
|
||||
value := splitterVal
|
||||
}
|
||||
let result := { eqnNames, splitterName }
|
||||
registerMatchEqns matchDeclName result
|
||||
return result
|
||||
|
||||
def getEquationsFor (matchDeclName : Name) : MetaM MatchEqns := do
|
||||
match matchEqnsExt.getState (← getEnv) |>.map.find? matchDeclName with
|
||||
| some matchEqns => return matchEqns
|
||||
| none => mkEquationsFor matchDeclName
|
||||
|
||||
builtin_initialize registerTraceClass `Meta.Match.matchEqs
|
||||
|
||||
|
|
|
|||
11
stage0/src/Lean/Meta/WHNF.lean
generated
11
stage0/src/Lean/Meta/WHNF.lean
generated
|
|
@ -279,7 +279,16 @@ def reduceMatcher? (e : Expr) : MetaM ReduceMatcherResult := do
|
|||
let auxAppType ← inferType auxApp
|
||||
forallBoundedTelescope auxAppType info.numAlts fun hs _ => do
|
||||
let auxApp := mkAppN auxApp hs
|
||||
let auxApp ← whnf auxApp
|
||||
/- When reducing `match` expressions, if the reducibility setting is at `TransparencyMode.reducible`,
|
||||
we increase it to `TransparencyMode.instance`. We use the `TransparencyMode.reducible` in many places (e.g., `simp`),
|
||||
and this setting prevents us from reducing `match` expressions where the discriminants are terms such as `OfNat.ofNat α n inst`.
|
||||
For example, `simp [Int.div]` will not unfold the application `Int.div 2 1` occuring in the target.
|
||||
|
||||
TODO: consider other solutions; investigate whether the solution above produces counterintuitive behavior. -/
|
||||
let mut transparency ← getTransparency
|
||||
if transparency == TransparencyMode.reducible then
|
||||
transparency := TransparencyMode.instances
|
||||
let auxApp ← withTransparency transparency <| whnf auxApp
|
||||
let auxAppFn := auxApp.getAppFn
|
||||
let mut i := prefixSz
|
||||
for h in hs do
|
||||
|
|
|
|||
3
stage0/src/library/compiler/specialize.cpp
generated
3
stage0/src/library/compiler/specialize.cpp
generated
|
|
@ -543,7 +543,8 @@ class specialize_fn {
|
|||
List.map f xs
|
||||
```
|
||||
When visiting `f`'s value, we should set `in_binder == true`, otherwise
|
||||
we are going to `ys`. Note that we would do it if `f`s value was in eta-expanded form.
|
||||
we are going to copy `ys`. Note that, `in_binder` we would be set to true
|
||||
if `f`s value was in eta-expanded form.
|
||||
|
||||
Remark: This is **not** a perfect solution because we are not using WHNF. We can't
|
||||
use it without refactoring the code and updating the local context.
|
||||
|
|
|
|||
1380
stage0/stdlib/Init/Notation.c
generated
1380
stage0/stdlib/Init/Notation.c
generated
File diff suppressed because it is too large
Load diff
2261
stage0/stdlib/Lean/Elab/BuiltinCommand.c
generated
2261
stage0/stdlib/Lean/Elab/BuiltinCommand.c
generated
File diff suppressed because it is too large
Load diff
731
stage0/stdlib/Lean/Elab/Tactic/BuiltinTactic.c
generated
731
stage0/stdlib/Lean/Elab/Tactic/BuiltinTactic.c
generated
|
|
@ -153,6 +153,7 @@ static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalParen___closed__4;
|
|||
static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalRenameInaccessibles___closed__3;
|
||||
lean_object* l_Lean_Elab_Tactic_elabSetOption___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Elab_Tactic_evalRenameInaccessibles___closed__1;
|
||||
lean_object* l_Lean_throwError___at_Lean_Elab_Tactic_evalCase___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Elab_Tactic_evalIntro___closed__16;
|
||||
lean_object* l___private_Lean_Elab_Open_0__Lean_Elab_OpenDecl_elabOpenScoped___at_Lean_Elab_Tactic_evalOpen___spec__19(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalRotateLeft___closed__4;
|
||||
|
|
@ -466,6 +467,7 @@ uint8_t lean_nat_dec_le(lean_object*, lean_object*);
|
|||
lean_object* l_List_rotateRight___rarg(lean_object*, lean_object*);
|
||||
static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalFailIfSuccess___closed__2;
|
||||
static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalSubst___closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_evalCase___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_qpartition_loop___at___private_Lean_Elab_Tactic_BuiltinTactic_0__Lean_Elab_Tactic_sortFVarIds___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Elab_Tactic_evalTacticSeqBracketed___closed__1;
|
||||
static lean_object* l_Lean_Elab_OpenDecl_elabOpenDecl___at_Lean_Elab_Tactic_evalOpen___spec__3___closed__3;
|
||||
|
|
@ -575,6 +577,7 @@ lean_object* l_Lean_LocalContext_setUserName(lean_object*, lean_object*, lean_ob
|
|||
static lean_object* l_Lean_Elab_Tactic_evalIntro___closed__14;
|
||||
static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalFailIfSuccess___closed__3;
|
||||
static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalOpen___closed__3;
|
||||
lean_object* l_Lean_throwError___at_Lean_Elab_Tactic_evalCase___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_BuiltinTactic_0__Lean_Elab_Tactic_findTag_x3f_match__1(lean_object*);
|
||||
lean_object* l_unsafeCast(lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_scopedEnvExtensionsRef;
|
||||
|
|
@ -14943,6 +14946,288 @@ return x_32;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_throwError___at_Lean_Elab_Tactic_evalCase___spec__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_11; lean_object* x_12; uint8_t x_13;
|
||||
x_11 = lean_ctor_get(x_8, 3);
|
||||
x_12 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_1, x_6, x_7, x_8, x_9, x_10);
|
||||
x_13 = !lean_is_exclusive(x_12);
|
||||
if (x_13 == 0)
|
||||
{
|
||||
lean_object* x_14; lean_object* x_15;
|
||||
x_14 = lean_ctor_get(x_12, 0);
|
||||
lean_inc(x_11);
|
||||
x_15 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_15, 0, x_11);
|
||||
lean_ctor_set(x_15, 1, x_14);
|
||||
lean_ctor_set_tag(x_12, 1);
|
||||
lean_ctor_set(x_12, 0, x_15);
|
||||
return x_12;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19;
|
||||
x_16 = lean_ctor_get(x_12, 0);
|
||||
x_17 = lean_ctor_get(x_12, 1);
|
||||
lean_inc(x_17);
|
||||
lean_inc(x_16);
|
||||
lean_dec(x_12);
|
||||
lean_inc(x_11);
|
||||
x_18 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_11);
|
||||
lean_ctor_set(x_18, 1, x_16);
|
||||
x_19 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_19, 0, x_18);
|
||||
lean_ctor_set(x_19, 1, x_17);
|
||||
return x_19;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Elab_Tactic_evalCase___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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17;
|
||||
x_16 = l_List_erase___at_Lean_Elab_Tactic_evalCase___spec__1(x_1, x_6);
|
||||
lean_inc(x_14);
|
||||
lean_inc(x_13);
|
||||
lean_inc(x_12);
|
||||
lean_inc(x_11);
|
||||
lean_inc(x_10);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
x_17 = l_Lean_Elab_Tactic_renameInaccessibles(x_6, x_2, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
|
||||
if (lean_obj_tag(x_17) == 0)
|
||||
{
|
||||
lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24;
|
||||
x_18 = lean_ctor_get(x_17, 0);
|
||||
lean_inc(x_18);
|
||||
x_19 = lean_ctor_get(x_17, 1);
|
||||
lean_inc(x_19);
|
||||
lean_dec(x_17);
|
||||
x_20 = lean_box(0);
|
||||
lean_inc(x_18);
|
||||
x_21 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_21, 0, x_18);
|
||||
lean_ctor_set(x_21, 1, x_20);
|
||||
x_22 = l_Lean_Elab_Tactic_setGoals(x_21, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_19);
|
||||
x_23 = lean_ctor_get(x_22, 1);
|
||||
lean_inc(x_23);
|
||||
lean_dec(x_22);
|
||||
lean_inc(x_18);
|
||||
x_24 = l_Lean_Meta_getMVarTag(x_18, x_11, x_12, x_13, x_14, x_23);
|
||||
if (lean_obj_tag(x_24) == 0)
|
||||
{
|
||||
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;
|
||||
x_25 = lean_ctor_get(x_24, 0);
|
||||
lean_inc(x_25);
|
||||
x_26 = lean_ctor_get(x_24, 1);
|
||||
lean_inc(x_26);
|
||||
lean_dec(x_24);
|
||||
x_27 = lean_box(0);
|
||||
lean_inc(x_18);
|
||||
x_28 = l_Lean_Meta_setMVarTag(x_18, x_27, x_11, x_12, x_13, x_14, x_26);
|
||||
x_29 = lean_ctor_get(x_28, 1);
|
||||
lean_inc(x_29);
|
||||
lean_dec(x_28);
|
||||
lean_inc(x_3);
|
||||
x_30 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_evalTactic), 10, 1);
|
||||
lean_closure_set(x_30, 0, x_3);
|
||||
x_31 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_withTacticInfoContext___rarg), 11, 2);
|
||||
lean_closure_set(x_31, 0, x_4);
|
||||
lean_closure_set(x_31, 1, x_30);
|
||||
x_32 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_closeUsingOrAdmit), 10, 1);
|
||||
lean_closure_set(x_32, 0, x_31);
|
||||
lean_inc(x_14);
|
||||
lean_inc(x_13);
|
||||
lean_inc(x_12);
|
||||
lean_inc(x_11);
|
||||
lean_inc(x_10);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
x_33 = l_Lean_Elab_Tactic_withCaseRef___at_Lean_Elab_Tactic_evalCase___spec__2(x_5, x_3, x_32, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_29);
|
||||
if (lean_obj_tag(x_33) == 0)
|
||||
{
|
||||
lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37;
|
||||
x_34 = lean_ctor_get(x_33, 1);
|
||||
lean_inc(x_34);
|
||||
lean_dec(x_33);
|
||||
x_35 = l_Lean_Meta_setMVarTag(x_18, x_25, x_11, x_12, x_13, x_14, x_34);
|
||||
x_36 = lean_ctor_get(x_35, 1);
|
||||
lean_inc(x_36);
|
||||
lean_dec(x_35);
|
||||
lean_inc(x_14);
|
||||
lean_inc(x_13);
|
||||
lean_inc(x_12);
|
||||
lean_inc(x_11);
|
||||
lean_inc(x_10);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_7);
|
||||
x_37 = l_Lean_Elab_Tactic_done(x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_36);
|
||||
if (lean_obj_tag(x_37) == 0)
|
||||
{
|
||||
lean_object* x_38; lean_object* x_39;
|
||||
x_38 = lean_ctor_get(x_37, 1);
|
||||
lean_inc(x_38);
|
||||
lean_dec(x_37);
|
||||
x_39 = l_Lean_Elab_Tactic_setGoals(x_16, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_38);
|
||||
lean_dec(x_14);
|
||||
lean_dec(x_13);
|
||||
lean_dec(x_12);
|
||||
lean_dec(x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
return x_39;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_40;
|
||||
lean_dec(x_16);
|
||||
lean_dec(x_14);
|
||||
lean_dec(x_13);
|
||||
lean_dec(x_12);
|
||||
lean_dec(x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
x_40 = !lean_is_exclusive(x_37);
|
||||
if (x_40 == 0)
|
||||
{
|
||||
return x_37;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_41; lean_object* x_42; lean_object* x_43;
|
||||
x_41 = lean_ctor_get(x_37, 0);
|
||||
x_42 = lean_ctor_get(x_37, 1);
|
||||
lean_inc(x_42);
|
||||
lean_inc(x_41);
|
||||
lean_dec(x_37);
|
||||
x_43 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_43, 0, x_41);
|
||||
lean_ctor_set(x_43, 1, x_42);
|
||||
return x_43;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_44; lean_object* x_45; lean_object* x_46; uint8_t x_47;
|
||||
lean_dec(x_16);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
x_44 = lean_ctor_get(x_33, 0);
|
||||
lean_inc(x_44);
|
||||
x_45 = lean_ctor_get(x_33, 1);
|
||||
lean_inc(x_45);
|
||||
lean_dec(x_33);
|
||||
x_46 = l_Lean_Meta_setMVarTag(x_18, x_25, x_11, x_12, x_13, x_14, x_45);
|
||||
lean_dec(x_14);
|
||||
lean_dec(x_13);
|
||||
lean_dec(x_12);
|
||||
lean_dec(x_11);
|
||||
x_47 = !lean_is_exclusive(x_46);
|
||||
if (x_47 == 0)
|
||||
{
|
||||
lean_object* x_48;
|
||||
x_48 = lean_ctor_get(x_46, 0);
|
||||
lean_dec(x_48);
|
||||
lean_ctor_set_tag(x_46, 1);
|
||||
lean_ctor_set(x_46, 0, x_44);
|
||||
return x_46;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_49; lean_object* x_50;
|
||||
x_49 = lean_ctor_get(x_46, 1);
|
||||
lean_inc(x_49);
|
||||
lean_dec(x_46);
|
||||
x_50 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_50, 0, x_44);
|
||||
lean_ctor_set(x_50, 1, x_49);
|
||||
return x_50;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_51;
|
||||
lean_dec(x_18);
|
||||
lean_dec(x_16);
|
||||
lean_dec(x_14);
|
||||
lean_dec(x_13);
|
||||
lean_dec(x_12);
|
||||
lean_dec(x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_51 = !lean_is_exclusive(x_24);
|
||||
if (x_51 == 0)
|
||||
{
|
||||
return x_24;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_52; lean_object* x_53; lean_object* x_54;
|
||||
x_52 = lean_ctor_get(x_24, 0);
|
||||
x_53 = lean_ctor_get(x_24, 1);
|
||||
lean_inc(x_53);
|
||||
lean_inc(x_52);
|
||||
lean_dec(x_24);
|
||||
x_54 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_54, 0, x_52);
|
||||
lean_ctor_set(x_54, 1, x_53);
|
||||
return x_54;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_55;
|
||||
lean_dec(x_16);
|
||||
lean_dec(x_14);
|
||||
lean_dec(x_13);
|
||||
lean_dec(x_12);
|
||||
lean_dec(x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_55 = !lean_is_exclusive(x_17);
|
||||
if (x_55 == 0)
|
||||
{
|
||||
return x_17;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_56; lean_object* x_57; lean_object* x_58;
|
||||
x_56 = lean_ctor_get(x_17, 0);
|
||||
x_57 = lean_ctor_get(x_17, 1);
|
||||
lean_inc(x_57);
|
||||
lean_inc(x_56);
|
||||
lean_dec(x_17);
|
||||
x_58 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_58, 0, x_56);
|
||||
lean_ctor_set(x_58, 1, x_57);
|
||||
return x_58;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Tactic_evalCase___closed__1() {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -15035,300 +15320,44 @@ return x_24;
|
|||
}
|
||||
else
|
||||
{
|
||||
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_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; uint8_t x_29;
|
||||
x_25 = l_Lean_Syntax_getArgs(x_17);
|
||||
lean_dec(x_17);
|
||||
x_26 = l_Lean_Syntax_getId(x_15);
|
||||
x_26 = l_Lean_Elab_Tactic_getUnsolvedGoals(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
x_27 = lean_ctor_get(x_26, 0);
|
||||
lean_inc(x_27);
|
||||
x_28 = lean_ctor_get(x_26, 1);
|
||||
lean_inc(x_28);
|
||||
lean_dec(x_26);
|
||||
x_29 = l_Lean_Syntax_isIdent(x_15);
|
||||
if (x_29 == 0)
|
||||
{
|
||||
lean_object* x_30;
|
||||
lean_dec(x_15);
|
||||
x_27 = l_Lean_Elab_Tactic_getUnsolvedGoals(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
x_28 = lean_ctor_get(x_27, 0);
|
||||
lean_inc(x_28);
|
||||
x_29 = lean_ctor_get(x_27, 1);
|
||||
lean_inc(x_29);
|
||||
lean_dec(x_27);
|
||||
lean_inc(x_28);
|
||||
x_30 = l___private_Lean_Elab_Tactic_BuiltinTactic_0__Lean_Elab_Tactic_findTag_x3f(x_28, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_29);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_2);
|
||||
x_30 = l_Lean_Elab_Tactic_getMainGoal(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_28);
|
||||
if (lean_obj_tag(x_30) == 0)
|
||||
{
|
||||
lean_object* x_31;
|
||||
lean_object* x_31; lean_object* x_32; lean_object* x_33;
|
||||
x_31 = lean_ctor_get(x_30, 0);
|
||||
lean_inc(x_31);
|
||||
if (lean_obj_tag(x_31) == 0)
|
||||
{
|
||||
lean_object* x_32; lean_object* x_33; lean_object* x_34;
|
||||
lean_dec(x_28);
|
||||
lean_dec(x_25);
|
||||
lean_dec(x_21);
|
||||
lean_dec(x_19);
|
||||
lean_dec(x_1);
|
||||
x_32 = lean_ctor_get(x_30, 1);
|
||||
lean_inc(x_32);
|
||||
lean_dec(x_30);
|
||||
x_33 = l_Lean_Elab_Tactic_evalCase___closed__4;
|
||||
x_34 = l_Lean_throwError___at___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_evalTacticUsing_loop___spec__2(x_33, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_32);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_34;
|
||||
x_33 = l_Lean_Elab_Tactic_evalCase___lambda__1(x_27, x_25, x_21, x_1, x_19, x_31, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_32);
|
||||
return x_33;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38;
|
||||
x_35 = lean_ctor_get(x_30, 1);
|
||||
lean_inc(x_35);
|
||||
lean_dec(x_30);
|
||||
x_36 = lean_ctor_get(x_31, 0);
|
||||
lean_inc(x_36);
|
||||
lean_dec(x_31);
|
||||
x_37 = l_List_erase___at_Lean_Elab_Tactic_evalCase___spec__1(x_28, x_36);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_2);
|
||||
x_38 = l_Lean_Elab_Tactic_renameInaccessibles(x_36, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_35);
|
||||
if (lean_obj_tag(x_38) == 0)
|
||||
{
|
||||
lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45;
|
||||
x_39 = lean_ctor_get(x_38, 0);
|
||||
lean_inc(x_39);
|
||||
x_40 = lean_ctor_get(x_38, 1);
|
||||
lean_inc(x_40);
|
||||
lean_dec(x_38);
|
||||
x_41 = lean_box(0);
|
||||
lean_inc(x_39);
|
||||
x_42 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_42, 0, x_39);
|
||||
lean_ctor_set(x_42, 1, x_41);
|
||||
x_43 = l_Lean_Elab_Tactic_setGoals(x_42, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_40);
|
||||
x_44 = lean_ctor_get(x_43, 1);
|
||||
lean_inc(x_44);
|
||||
lean_dec(x_43);
|
||||
lean_inc(x_39);
|
||||
x_45 = l_Lean_Meta_getMVarTag(x_39, x_6, x_7, x_8, x_9, x_44);
|
||||
if (lean_obj_tag(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; lean_object* x_53; lean_object* x_54;
|
||||
x_46 = lean_ctor_get(x_45, 0);
|
||||
lean_inc(x_46);
|
||||
x_47 = lean_ctor_get(x_45, 1);
|
||||
lean_inc(x_47);
|
||||
lean_dec(x_45);
|
||||
x_48 = lean_box(0);
|
||||
lean_inc(x_39);
|
||||
x_49 = l_Lean_Meta_setMVarTag(x_39, x_48, x_6, x_7, x_8, x_9, x_47);
|
||||
x_50 = lean_ctor_get(x_49, 1);
|
||||
lean_inc(x_50);
|
||||
lean_dec(x_49);
|
||||
lean_inc(x_21);
|
||||
x_51 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_evalTactic), 10, 1);
|
||||
lean_closure_set(x_51, 0, x_21);
|
||||
x_52 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_withTacticInfoContext___rarg), 11, 2);
|
||||
lean_closure_set(x_52, 0, x_1);
|
||||
lean_closure_set(x_52, 1, x_51);
|
||||
x_53 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_closeUsingOrAdmit), 10, 1);
|
||||
lean_closure_set(x_53, 0, x_52);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_2);
|
||||
x_54 = l_Lean_Elab_Tactic_withCaseRef___at_Lean_Elab_Tactic_evalCase___spec__2(x_19, x_21, x_53, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_50);
|
||||
if (lean_obj_tag(x_54) == 0)
|
||||
{
|
||||
lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58;
|
||||
x_55 = lean_ctor_get(x_54, 1);
|
||||
lean_inc(x_55);
|
||||
lean_dec(x_54);
|
||||
x_56 = l_Lean_Meta_setMVarTag(x_39, x_46, x_6, x_7, x_8, x_9, x_55);
|
||||
x_57 = lean_ctor_get(x_56, 1);
|
||||
lean_inc(x_57);
|
||||
lean_dec(x_56);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_2);
|
||||
x_58 = l_Lean_Elab_Tactic_done(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_57);
|
||||
if (lean_obj_tag(x_58) == 0)
|
||||
{
|
||||
lean_object* x_59; lean_object* x_60;
|
||||
x_59 = lean_ctor_get(x_58, 1);
|
||||
lean_inc(x_59);
|
||||
lean_dec(x_58);
|
||||
x_60 = l_Lean_Elab_Tactic_setGoals(x_37, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_59);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_60;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_61;
|
||||
lean_dec(x_37);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_61 = !lean_is_exclusive(x_58);
|
||||
if (x_61 == 0)
|
||||
{
|
||||
return x_58;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_62; lean_object* x_63; lean_object* x_64;
|
||||
x_62 = lean_ctor_get(x_58, 0);
|
||||
x_63 = lean_ctor_get(x_58, 1);
|
||||
lean_inc(x_63);
|
||||
lean_inc(x_62);
|
||||
lean_dec(x_58);
|
||||
x_64 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_64, 0, x_62);
|
||||
lean_ctor_set(x_64, 1, x_63);
|
||||
return x_64;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_65; lean_object* x_66; lean_object* x_67; uint8_t x_68;
|
||||
lean_dec(x_37);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_65 = lean_ctor_get(x_54, 0);
|
||||
lean_inc(x_65);
|
||||
x_66 = lean_ctor_get(x_54, 1);
|
||||
lean_inc(x_66);
|
||||
lean_dec(x_54);
|
||||
x_67 = l_Lean_Meta_setMVarTag(x_39, x_46, x_6, x_7, x_8, x_9, x_66);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
x_68 = !lean_is_exclusive(x_67);
|
||||
if (x_68 == 0)
|
||||
{
|
||||
lean_object* x_69;
|
||||
x_69 = lean_ctor_get(x_67, 0);
|
||||
lean_dec(x_69);
|
||||
lean_ctor_set_tag(x_67, 1);
|
||||
lean_ctor_set(x_67, 0, x_65);
|
||||
return x_67;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_70; lean_object* x_71;
|
||||
x_70 = lean_ctor_get(x_67, 1);
|
||||
lean_inc(x_70);
|
||||
lean_dec(x_67);
|
||||
x_71 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_71, 0, x_65);
|
||||
lean_ctor_set(x_71, 1, x_70);
|
||||
return x_71;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_72;
|
||||
lean_dec(x_39);
|
||||
lean_dec(x_37);
|
||||
lean_dec(x_21);
|
||||
lean_dec(x_19);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_72 = !lean_is_exclusive(x_45);
|
||||
if (x_72 == 0)
|
||||
{
|
||||
return x_45;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_73; lean_object* x_74; lean_object* x_75;
|
||||
x_73 = lean_ctor_get(x_45, 0);
|
||||
x_74 = lean_ctor_get(x_45, 1);
|
||||
lean_inc(x_74);
|
||||
lean_inc(x_73);
|
||||
lean_dec(x_45);
|
||||
x_75 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_75, 0, x_73);
|
||||
lean_ctor_set(x_75, 1, x_74);
|
||||
return x_75;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_76;
|
||||
lean_dec(x_37);
|
||||
lean_dec(x_21);
|
||||
lean_dec(x_19);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_76 = !lean_is_exclusive(x_38);
|
||||
if (x_76 == 0)
|
||||
{
|
||||
return x_38;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_77; lean_object* x_78; lean_object* x_79;
|
||||
x_77 = lean_ctor_get(x_38, 0);
|
||||
x_78 = lean_ctor_get(x_38, 1);
|
||||
lean_inc(x_78);
|
||||
lean_inc(x_77);
|
||||
lean_dec(x_38);
|
||||
x_79 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_79, 0, x_77);
|
||||
lean_ctor_set(x_79, 1, x_78);
|
||||
return x_79;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_80;
|
||||
lean_dec(x_28);
|
||||
uint8_t x_34;
|
||||
lean_dec(x_27);
|
||||
lean_dec(x_25);
|
||||
lean_dec(x_21);
|
||||
lean_dec(x_19);
|
||||
|
|
@ -15341,23 +15370,125 @@ lean_dec(x_4);
|
|||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_80 = !lean_is_exclusive(x_30);
|
||||
if (x_80 == 0)
|
||||
x_34 = !lean_is_exclusive(x_30);
|
||||
if (x_34 == 0)
|
||||
{
|
||||
return x_30;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_81; lean_object* x_82; lean_object* x_83;
|
||||
x_81 = lean_ctor_get(x_30, 0);
|
||||
x_82 = lean_ctor_get(x_30, 1);
|
||||
lean_inc(x_82);
|
||||
lean_inc(x_81);
|
||||
lean_object* x_35; lean_object* x_36; lean_object* x_37;
|
||||
x_35 = lean_ctor_get(x_30, 0);
|
||||
x_36 = lean_ctor_get(x_30, 1);
|
||||
lean_inc(x_36);
|
||||
lean_inc(x_35);
|
||||
lean_dec(x_30);
|
||||
x_83 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_83, 0, x_81);
|
||||
lean_ctor_set(x_83, 1, x_82);
|
||||
return x_83;
|
||||
x_37 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_37, 0, x_35);
|
||||
lean_ctor_set(x_37, 1, x_36);
|
||||
return x_37;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_38; lean_object* x_39;
|
||||
x_38 = l_Lean_Syntax_getId(x_15);
|
||||
lean_dec(x_15);
|
||||
lean_inc(x_27);
|
||||
x_39 = l___private_Lean_Elab_Tactic_BuiltinTactic_0__Lean_Elab_Tactic_findTag_x3f(x_27, x_38, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_28);
|
||||
if (lean_obj_tag(x_39) == 0)
|
||||
{
|
||||
lean_object* x_40;
|
||||
x_40 = lean_ctor_get(x_39, 0);
|
||||
lean_inc(x_40);
|
||||
if (lean_obj_tag(x_40) == 0)
|
||||
{
|
||||
lean_object* x_41; lean_object* x_42; lean_object* x_43; uint8_t x_44;
|
||||
lean_dec(x_27);
|
||||
lean_dec(x_25);
|
||||
lean_dec(x_21);
|
||||
lean_dec(x_19);
|
||||
lean_dec(x_1);
|
||||
x_41 = lean_ctor_get(x_39, 1);
|
||||
lean_inc(x_41);
|
||||
lean_dec(x_39);
|
||||
x_42 = l_Lean_Elab_Tactic_evalCase___closed__4;
|
||||
x_43 = l_Lean_throwError___at_Lean_Elab_Tactic_evalCase___spec__3(x_42, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_41);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_44 = !lean_is_exclusive(x_43);
|
||||
if (x_44 == 0)
|
||||
{
|
||||
return x_43;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_45; lean_object* x_46; lean_object* x_47;
|
||||
x_45 = lean_ctor_get(x_43, 0);
|
||||
x_46 = lean_ctor_get(x_43, 1);
|
||||
lean_inc(x_46);
|
||||
lean_inc(x_45);
|
||||
lean_dec(x_43);
|
||||
x_47 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_47, 0, x_45);
|
||||
lean_ctor_set(x_47, 1, x_46);
|
||||
return x_47;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_48; lean_object* x_49; lean_object* x_50;
|
||||
x_48 = lean_ctor_get(x_39, 1);
|
||||
lean_inc(x_48);
|
||||
lean_dec(x_39);
|
||||
x_49 = lean_ctor_get(x_40, 0);
|
||||
lean_inc(x_49);
|
||||
lean_dec(x_40);
|
||||
x_50 = l_Lean_Elab_Tactic_evalCase___lambda__1(x_27, x_25, x_21, x_1, x_19, x_49, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_48);
|
||||
return x_50;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_51;
|
||||
lean_dec(x_27);
|
||||
lean_dec(x_25);
|
||||
lean_dec(x_21);
|
||||
lean_dec(x_19);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_51 = !lean_is_exclusive(x_39);
|
||||
if (x_51 == 0)
|
||||
{
|
||||
return x_39;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_52; lean_object* x_53; lean_object* x_54;
|
||||
x_52 = lean_ctor_get(x_39, 0);
|
||||
x_53 = lean_ctor_get(x_39, 1);
|
||||
lean_inc(x_53);
|
||||
lean_inc(x_52);
|
||||
lean_dec(x_39);
|
||||
x_54 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_54, 0, x_52);
|
||||
lean_ctor_set(x_54, 1, x_53);
|
||||
return x_54;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -15373,6 +15504,22 @@ lean_dec(x_2);
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_throwError___at_Lean_Elab_Tactic_evalCase___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_11;
|
||||
x_11 = l_Lean_throwError___at_Lean_Elab_Tactic_evalCase___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_11;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_evalCase___closed__1() {
|
||||
_start:
|
||||
{
|
||||
|
|
|
|||
3935
stage0/stdlib/Lean/Meta/Match/MatchEqs.c
generated
3935
stage0/stdlib/Lean/Meta/Match/MatchEqs.c
generated
File diff suppressed because it is too large
Load diff
1234
stage0/stdlib/Lean/Meta/WHNF.c
generated
1234
stage0/stdlib/Lean/Meta/WHNF.c
generated
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue