chore: update stage0
This commit is contained in:
parent
6c9f000885
commit
64e74e4271
52 changed files with 28561 additions and 26522 deletions
103
stage0/src/Lean/Meta/Tactic/Apply.lean
generated
103
stage0/src/Lean/Meta/Tactic/Apply.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -9,93 +10,89 @@ import Lean.Meta.SynthInstance
|
|||
import Lean.Meta.CollectMVars
|
||||
import Lean.Meta.Tactic.Util
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
/-
|
||||
Compute the number of expected arguments and whether the result type is of the form
|
||||
(?m ...) where ?m is an unassigned metavariable.
|
||||
-/
|
||||
private def getExpectedNumArgsAux (e : Expr) : MetaM (Nat × Bool) :=
|
||||
withReducible $ forallTelescopeReducing e $ fun xs body =>
|
||||
withReducible $ forallTelescopeReducing e fun xs body =>
|
||||
pure (xs.size, body.getAppFn.isMVar)
|
||||
|
||||
private def getExpectedNumArgs (e : Expr) : MetaM Nat := do
|
||||
(numArgs, _) ← getExpectedNumArgsAux e;
|
||||
let (numArgs, _) ← getExpectedNumArgsAux e
|
||||
pure numArgs
|
||||
|
||||
private def throwApplyError {α} (mvarId : MVarId) (eType : Expr) (targetType : Expr) : MetaM α :=
|
||||
throwTacticEx `apply mvarId ("failed to unify" ++ indentExpr eType ++ Format.line ++ "with" ++ indentExpr targetType)
|
||||
throwTacticEx `apply mvarId msg!"failed to unify{indentExpr eType}\nwith{indentExpr targetType}"
|
||||
|
||||
def synthAppInstances (tacticName : Name) (mvarId : MVarId) (newMVars : Array Expr) (binderInfos : Array BinderInfo) : MetaM Unit :=
|
||||
newMVars.size.forM $ fun i =>
|
||||
when (binderInfos.get! i).isInstImplicit $ do
|
||||
let mvar := newMVars.get! i;
|
||||
mvarType ← inferType mvar;
|
||||
mvarVal ← synthInstance mvarType;
|
||||
unlessM (isDefEq mvar mvarVal) $
|
||||
throwTacticEx tacticName mvarId ("failed to assign synthesized instance")
|
||||
newMVars.size.forM fun i => do
|
||||
if binderInfos[i].isInstImplicit then
|
||||
let mvar := newMVars[i]
|
||||
let mvarType ← inferType mvar
|
||||
let mvarVal ← synthInstance mvarType
|
||||
unless (← isDefEq mvar mvarVal) do
|
||||
throwTacticEx tacticName mvarId "failed to assign synthesized instance"
|
||||
|
||||
def appendParentTag (mvarId : MVarId) (newMVars : Array Expr) (binderInfos : Array BinderInfo) : MetaM Unit := do
|
||||
parentTag ← getMVarTag mvarId;
|
||||
let parentTag ← getMVarTag mvarId
|
||||
if newMVars.size == 1 then
|
||||
-- if there is only one subgoal, we inherit the parent tag
|
||||
setMVarTag (newMVars.get! 0).mvarId! parentTag
|
||||
else unless parentTag.isAnonymous $
|
||||
newMVars.size.forM $ fun i =>
|
||||
let newMVarId := (newMVars.get! i).mvarId!;
|
||||
unlessM (isExprMVarAssigned newMVarId) $
|
||||
unless (binderInfos.get! i).isInstImplicit $ do
|
||||
currTag ← getMVarTag newMVarId;
|
||||
setMVarTag newMVarId (appendTag parentTag currTag)
|
||||
setMVarTag newMVars[0].mvarId! parentTag
|
||||
else
|
||||
unless parentTag.isAnonymous do
|
||||
newMVars.size.forM fun i => do
|
||||
let newMVarId := newMVars[i].mvarId!
|
||||
unless (← isExprMVarAssigned newMVarId) do
|
||||
unless binderInfos[i].isInstImplicit do
|
||||
let currTag ← getMVarTag newMVarId
|
||||
setMVarTag newMVarId (appendTag parentTag currTag)
|
||||
|
||||
def postprocessAppMVars (tacticName : Name) (mvarId : MVarId) (newMVars : Array Expr) (binderInfos : Array BinderInfo) : MetaM Unit := do
|
||||
synthAppInstances tacticName mvarId newMVars binderInfos;
|
||||
synthAppInstances tacticName mvarId newMVars binderInfos
|
||||
-- TODO: default and auto params
|
||||
appendParentTag mvarId newMVars binderInfos
|
||||
|
||||
private def dependsOnOthers (mvar : Expr) (otherMVars : Array Expr) : MetaM Bool :=
|
||||
otherMVars.anyM $ fun otherMVar =>
|
||||
otherMVars.anyM fun otherMVar =>
|
||||
if mvar == otherMVar then pure false
|
||||
else do
|
||||
otherMVarType ← inferType otherMVar;
|
||||
pure $ (otherMVarType.findMVar? $ fun mvarId => mvarId == mvar.mvarId!).isSome
|
||||
let otherMVarType ← inferType otherMVar
|
||||
pure $ (otherMVarType.findMVar? fun mvarId => mvarId == mvar.mvarId!).isSome
|
||||
|
||||
private def reorderNonDependentFirst (newMVars : Array Expr) : MetaM (List MVarId) := do
|
||||
(nonDeps, deps) ← newMVars.foldlM
|
||||
(fun (acc : Array MVarId × Array MVarId) (mvar : Expr) => do
|
||||
let (nonDeps, deps) := acc;
|
||||
let currMVarId := mvar.mvarId!;
|
||||
condM (dependsOnOthers mvar newMVars)
|
||||
(pure (nonDeps, deps.push currMVarId))
|
||||
(pure (nonDeps.push currMVarId, deps)))
|
||||
(#[], #[]);
|
||||
let (nonDeps, deps) ← newMVars.foldlM (init := (#[], #[])) fun (nonDeps, deps) (mvar : Expr) => do
|
||||
let currMVarId := mvar.mvarId!
|
||||
if (← dependsOnOthers mvar newMVars) then
|
||||
pure (nonDeps, deps.push currMVarId)
|
||||
else
|
||||
pure (nonDeps.push currMVarId, deps)
|
||||
pure $ nonDeps.toList ++ deps.toList
|
||||
|
||||
inductive ApplyNewGoals
|
||||
| nonDependentFirst | nonDependentOnly | all
|
||||
|
||||
def apply (mvarId : MVarId) (e : Expr) : MetaM (List MVarId) :=
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `apply;
|
||||
targetType ← getMVarType mvarId;
|
||||
eType ← inferType e;
|
||||
(numArgs, hasMVarHead) ← getExpectedNumArgsAux eType;
|
||||
numArgs ← if !hasMVarHead then pure numArgs else do {
|
||||
targetTypeNumArgs ← getExpectedNumArgs targetType;
|
||||
pure (numArgs - targetTypeNumArgs)
|
||||
};
|
||||
(newMVars, binderInfos, eType) ← forallMetaTelescopeReducing eType (some numArgs);
|
||||
unlessM (isDefEq eType targetType) $ throwApplyError mvarId eType targetType;
|
||||
postprocessAppMVars `apply mvarId newMVars binderInfos;
|
||||
e ← instantiateMVars e;
|
||||
assignExprMVar mvarId (mkAppN e newMVars);
|
||||
newMVars ← newMVars.filterM $ fun mvar => not <$> isExprMVarAssigned mvar.mvarId!;
|
||||
otherMVarIds ← getMVarsNoDelayed e;
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `apply
|
||||
let targetType ← getMVarType mvarId
|
||||
let eType ← inferType e
|
||||
let (numArgs, hasMVarHead) ← getExpectedNumArgsAux eType
|
||||
if hasMVarHead then
|
||||
let targetTypeNumArgs ← getExpectedNumArgs targetType
|
||||
numArgs := numArgs - targetTypeNumArgs
|
||||
let (newMVars, binderInfos, eType) ← forallMetaTelescopeReducing eType (some numArgs)
|
||||
unless (← isDefEq eType targetType) do throwApplyError mvarId eType targetType
|
||||
postprocessAppMVars `apply mvarId newMVars binderInfos
|
||||
let e ← instantiateMVars e
|
||||
assignExprMVar mvarId (mkAppN e newMVars)
|
||||
let newMVars ← newMVars.filterM $ fun mvar => not <$> isExprMVarAssigned mvar.mvarId!
|
||||
let otherMVarIds ← getMVarsNoDelayed e
|
||||
-- TODO: add option `ApplyNewGoals` and implement other orders
|
||||
newMVarIds ← reorderNonDependentFirst newMVars;
|
||||
let otherMVarIds := otherMVarIds.filter fun mvarId => !newMVarIds.contains mvarId;
|
||||
let newMVarIds ← reorderNonDependentFirst newMVars
|
||||
let otherMVarIds := otherMVarIds.filter fun mvarId => !newMVarIds.contains mvarId
|
||||
pure $ newMVarIds ++ otherMVarIds.toList
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
93
stage0/src/Lean/Meta/Tactic/Assert.lean
generated
93
stage0/src/Lean/Meta/Tactic/Assert.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -8,20 +9,19 @@ import Lean.Meta.Tactic.FVarSubst
|
|||
import Lean.Meta.Tactic.Intro
|
||||
import Lean.Meta.Tactic.Revert
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
/--
|
||||
Convert the given goal `Ctx |- target` into `Ctx |- type -> target`.
|
||||
It assumes `val` has type `type` -/
|
||||
def assert (mvarId : MVarId) (name : Name) (type : Expr) (val : Expr) : MetaM MVarId := do
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `assert;
|
||||
tag ← getMVarTag mvarId;
|
||||
target ← getMVarType mvarId;
|
||||
let newType := Lean.mkForall name BinderInfo.default type target;
|
||||
newMVar ← mkFreshExprSyntheticOpaqueMVar newType tag;
|
||||
assignExprMVar mvarId (mkApp newMVar val);
|
||||
def assert (mvarId : MVarId) (name : Name) (type : Expr) (val : Expr) : MetaM MVarId :=
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `assert
|
||||
let tag ← getMVarTag mvarId
|
||||
let target ← getMVarType mvarId
|
||||
let newType := Lean.mkForall name BinderInfo.default type target
|
||||
let newMVar ← mkFreshExprSyntheticOpaqueMVar newType tag
|
||||
assignExprMVar mvarId (mkApp newMVar val)
|
||||
pure newMVar.mvarId!
|
||||
|
||||
/--
|
||||
|
|
@ -29,12 +29,12 @@ withMVarContext mvarId $ do
|
|||
It assumes `val` has type `type` -/
|
||||
def define (mvarId : MVarId) (name : Name) (type : Expr) (val : Expr) : MetaM MVarId := do
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `define;
|
||||
tag ← getMVarTag mvarId;
|
||||
target ← getMVarType mvarId;
|
||||
let newType := Lean.mkLet name type val target;
|
||||
newMVar ← mkFreshExprSyntheticOpaqueMVar newType tag;
|
||||
assignExprMVar mvarId newMVar;
|
||||
checkNotAssigned mvarId `define
|
||||
let tag ← getMVarTag mvarId
|
||||
let target ← getMVarType mvarId
|
||||
let newType := Lean.mkLet name type val target
|
||||
let newMVar ← mkFreshExprSyntheticOpaqueMVar newType tag
|
||||
assignExprMVar mvarId newMVar
|
||||
pure newMVar.mvarId!
|
||||
|
||||
/--
|
||||
|
|
@ -42,15 +42,15 @@ withMVarContext mvarId $ do
|
|||
It assumes `val` has type `type` -/
|
||||
def assertExt (mvarId : MVarId) (name : Name) (type : Expr) (val : Expr) (hName : Name := `h) : MetaM MVarId := do
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `assert;
|
||||
tag ← getMVarTag mvarId;
|
||||
target ← getMVarType mvarId;
|
||||
u ← getLevel type;
|
||||
let hType := mkApp3 (mkConst `Eq [u]) type (mkBVar 0) val;
|
||||
let newType := Lean.mkForall name BinderInfo.default type $ Lean.mkForall hName BinderInfo.default hType target;
|
||||
newMVar ← mkFreshExprSyntheticOpaqueMVar newType tag;
|
||||
rflPrf ← mkEqRefl val;
|
||||
assignExprMVar mvarId (mkApp2 newMVar val rflPrf);
|
||||
checkNotAssigned mvarId `assert
|
||||
let tag ← getMVarTag mvarId
|
||||
let target ← getMVarType mvarId
|
||||
let u ← getLevel type
|
||||
let hType := mkApp3 (mkConst `Eq [u]) type (mkBVar 0) val
|
||||
let newType := Lean.mkForall name BinderInfo.default type $ Lean.mkForall hName BinderInfo.default hType target
|
||||
let newMVar ← mkFreshExprSyntheticOpaqueMVar newType tag
|
||||
let rflPrf ← mkEqRefl val
|
||||
assignExprMVar mvarId (mkApp2 newMVar val rflPrf)
|
||||
pure newMVar.mvarId!
|
||||
|
||||
structure AssertAfterResult :=
|
||||
|
|
@ -64,28 +64,25 @@ structure AssertAfterResult :=
|
|||
Note that `val` does not need to be well-formed after `fvarId`. That is, it may contain variables that are defined after `fvarId`. -/
|
||||
def assertAfter (mvarId : MVarId) (fvarId : FVarId) (userName : Name) (type : Expr) (val : Expr) : MetaM AssertAfterResult := do
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `assertAfter;
|
||||
tag ← getMVarTag mvarId;
|
||||
target ← getMVarType mvarId;
|
||||
localDecl ← getLocalDecl fvarId;
|
||||
lctx ← getLCtx;
|
||||
localInsts ← getLocalInstances;
|
||||
let fvarIds := lctx.foldlFrom (fun (fvarIds : Array FVarId) decl => fvarIds.push decl.fvarId) #[] (localDecl.index+1);
|
||||
let xs := fvarIds.map mkFVar;
|
||||
targetNew ← mkForallFVars xs target;
|
||||
let targetNew := Lean.mkForall userName BinderInfo.default type targetNew;
|
||||
let lctxNew := fvarIds.foldl (fun (lctxNew : LocalContext) fvarId => lctxNew.erase fvarId) lctx;
|
||||
let localInstsNew := localInsts.filter fun inst => fvarIds.contains inst.fvar.fvarId!;
|
||||
mvarNew ← mkFreshExprMVarAt lctxNew localInstsNew targetNew MetavarKind.syntheticOpaque tag;
|
||||
let args := (fvarIds.filter fun fvarId => !(lctx.get! fvarId).isLet).map mkFVar;
|
||||
let args := #[val] ++ args;
|
||||
assignExprMVar mvarId (mkAppN mvarNew args);
|
||||
(fvarIdNew, mvarIdNew) ← intro1P mvarNew.mvarId!;
|
||||
(fvarIdsNew, mvarIdNew) ← introNP mvarIdNew fvarIds.size;
|
||||
let subst := fvarIds.size.fold
|
||||
(fun i (subst : FVarSubst) => subst.insert (fvarIds.get! i) (mkFVar (fvarIdsNew.get! i)))
|
||||
{};
|
||||
checkNotAssigned mvarId `assertAfter
|
||||
let tag ← getMVarTag mvarId
|
||||
let target ← getMVarType mvarId
|
||||
let localDecl ← getLocalDecl fvarId
|
||||
let lctx ← getLCtx
|
||||
let localInsts ← getLocalInstances
|
||||
let fvarIds := lctx.foldlFrom (fun (fvarIds : Array FVarId) decl => fvarIds.push decl.fvarId) #[] (localDecl.index+1)
|
||||
let xs := fvarIds.map mkFVar
|
||||
let targetNew ← mkForallFVars xs target
|
||||
let targetNew := Lean.mkForall userName BinderInfo.default type targetNew
|
||||
let lctxNew := fvarIds.foldl (fun (lctxNew : LocalContext) fvarId => lctxNew.erase fvarId) lctx
|
||||
let localInstsNew := localInsts.filter fun inst => fvarIds.contains inst.fvar.fvarId!
|
||||
let mvarNew ← mkFreshExprMVarAt lctxNew localInstsNew targetNew MetavarKind.syntheticOpaque tag
|
||||
let args := (fvarIds.filter fun fvarId => !(lctx.get! fvarId).isLet).map mkFVar
|
||||
let args := #[val] ++ args
|
||||
assignExprMVar mvarId (mkAppN mvarNew args)
|
||||
let (fvarIdNew, mvarIdNew) ← intro1P mvarNew.mvarId!
|
||||
let (fvarIdsNew, mvarIdNew) ← introNP mvarIdNew fvarIds.size
|
||||
let subst := fvarIds.size.fold (init := {}) fun i subst => subst.insert fvarIds[i] (mkFVar fvarIdsNew[i])
|
||||
pure { fvarId := fvarIdNew, mvarId := mvarIdNew, subst := subst }
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
26
stage0/src/Lean/Meta/Tactic/Assumption.lean
generated
26
stage0/src/Lean/Meta/Tactic/Assumption.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2019 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -6,25 +7,26 @@ Authors: Leonardo de Moura
|
|||
import Lean.Meta.ExprDefEq
|
||||
import Lean.Meta.Tactic.Util
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
def assumptionAux (mvarId : MVarId) : MetaM Bool :=
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `assumption;
|
||||
mvarType ← getMVarType mvarId;
|
||||
lctx ← getLCtx;
|
||||
h? ← lctx.findDeclRevM? $ fun decl =>
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `assumption
|
||||
let mvarType ← getMVarType mvarId
|
||||
let lctx ← getLCtx
|
||||
let h? ← lctx.findDeclRevM? fun decl => do
|
||||
if decl.isAuxDecl then
|
||||
pure none
|
||||
else if (← isDefEq mvarType decl.type) then
|
||||
pure (some decl.toExpr)
|
||||
else
|
||||
condM (isDefEq mvarType decl.type) (pure (some decl.toExpr)) (pure none);
|
||||
pure none
|
||||
match h? with
|
||||
| some h => do assignExprMVar mvarId h; pure true
|
||||
| none => pure false
|
||||
|
||||
def assumption (mvarId : MVarId) : MetaM Unit :=
|
||||
unlessM (assumptionAux mvarId) $ throwTacticEx `assumption mvarId ""
|
||||
def assumption (mvarId : MVarId) : MetaM Unit := do
|
||||
unless (← assumptionAux mvarId) do
|
||||
throwTacticEx `assumption mvarId ""
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
250
stage0/src/Lean/Meta/Tactic/Cases.lean
generated
250
stage0/src/Lean/Meta/Tactic/Cases.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -9,41 +10,39 @@ import Lean.Meta.Tactic.Injection
|
|||
import Lean.Meta.Tactic.Assert
|
||||
import Lean.Meta.Tactic.Subst
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
private def throwInductiveTypeExpected {α} (type : Expr) : MetaM α := do
|
||||
throwError ("failed to compile pattern matching, inductive type expected" ++ indentExpr type)
|
||||
throwError! "failed to compile pattern matching, inductive type expected{indentExpr type}"
|
||||
|
||||
def getInductiveUniverseAndParams (type : Expr) : MetaM (List Level × Array Expr) := do
|
||||
type ← whnfD type;
|
||||
let type ← whnfD type
|
||||
matchConstInduct type.getAppFn (fun _ => throwInductiveTypeExpected type) fun val us =>
|
||||
let I := type.getAppFn;
|
||||
let Iargs := type.getAppArgs;
|
||||
let params := Iargs.extract 0 val.nparams;
|
||||
let I := type.getAppFn
|
||||
let Iargs := type.getAppArgs
|
||||
let params := Iargs.extract 0 val.nparams
|
||||
pure (us, params)
|
||||
|
||||
private def mkEqAndProof (lhs rhs : Expr) : MetaM (Expr × Expr) := do
|
||||
lhsType ← inferType lhs;
|
||||
rhsType ← inferType rhs;
|
||||
u ← getLevel lhsType;
|
||||
condM (isDefEq lhsType rhsType)
|
||||
(pure (mkApp3 (mkConst `Eq [u]) lhsType lhs rhs, mkApp2 (mkConst `Eq.refl [u]) lhsType lhs))
|
||||
(pure (mkApp4 (mkConst `HEq [u]) lhsType lhs rhsType rhs, mkApp2 (mkConst `HEq.refl [u]) lhsType lhs))
|
||||
let lhsType ← inferType lhs
|
||||
let rhsType ← inferType rhs
|
||||
let u ← getLevel lhsType
|
||||
if (← isDefEq lhsType rhsType) then
|
||||
pure (mkApp3 (mkConst `Eq [u]) lhsType lhs rhs, mkApp2 (mkConst `Eq.refl [u]) lhsType lhs)
|
||||
else
|
||||
pure (mkApp4 (mkConst `HEq [u]) lhsType lhs rhsType rhs, mkApp2 (mkConst `HEq.refl [u]) lhsType lhs)
|
||||
|
||||
private partial def withNewIndexEqsAux {α} (indices newIndices : Array Expr) (k : Array Expr → Array Expr → MetaM α) : Nat → Array Expr → Array Expr → MetaM α
|
||||
| i, newEqs, newRefls =>
|
||||
if h : i < indices.size then do
|
||||
let index := indices.get! i;
|
||||
let newIndex := newIndices.get! i;
|
||||
(newEqType, newRefl) ← mkEqAndProof index newIndex;
|
||||
private partial def withNewIndexEqs {α} (indices newIndices : Array Expr) (k : Array Expr → Array Expr → MetaM α) : MetaM α :=
|
||||
let rec loop (i : Nat) (newEqs : Array Expr) (newRefls : Array Expr) := do
|
||||
if h : i < indices.size then
|
||||
let index := indices[i]
|
||||
let newIndex := newIndices[i]
|
||||
let (newEqType, newRefl) ← mkEqAndProof index newIndex
|
||||
withLocalDeclD `h newEqType $ fun newEq => do
|
||||
withNewIndexEqsAux (i+1) (newEqs.push newEq) (newRefls.push newRefl)
|
||||
loop (i+1) (newEqs.push newEq) (newRefls.push newRefl)
|
||||
else
|
||||
k newEqs newRefls
|
||||
|
||||
private def withNewIndexEqs {α} (indices newIndices : Array Expr) (k : Array Expr → Array Expr → MetaM α) : MetaM α :=
|
||||
withNewIndexEqsAux indices newIndices k 0 #[] #[]
|
||||
loop 0 #[] #[]
|
||||
|
||||
structure GeneralizeIndicesSubgoal :=
|
||||
(mvarId : MVarId)
|
||||
|
|
@ -68,38 +67,38 @@ structure GeneralizeIndicesSubgoal :=
|
|||
- `indicesFVarIds`: `j'` ids
|
||||
- `fvarId`: `h'` id
|
||||
- `numEqs`: number of equations in the target -/
|
||||
def generalizeIndices (mvarId : MVarId) (fvarId : FVarId) : MetaM GeneralizeIndicesSubgoal := do
|
||||
withMVarContext mvarId $ do
|
||||
lctx ← getLCtx;
|
||||
localInsts ← getLocalInstances;
|
||||
checkNotAssigned mvarId `generalizeIndices;
|
||||
fvarDecl ← getLocalDecl fvarId;
|
||||
type ← whnf fvarDecl.type;
|
||||
def generalizeIndices (mvarId : MVarId) (fvarId : FVarId) : MetaM GeneralizeIndicesSubgoal :=
|
||||
withMVarContext mvarId do
|
||||
let lctx ← getLCtx
|
||||
let localInsts ← getLocalInstances
|
||||
checkNotAssigned mvarId `generalizeIndices
|
||||
let fvarDecl ← getLocalDecl fvarId
|
||||
let type ← whnf fvarDecl.type
|
||||
type.withApp fun f args => matchConstInduct f (fun _ => throwTacticEx `generalizeIndices mvarId "inductive type expected") fun val _ => do
|
||||
unless (val.nindices > 0) $ throwTacticEx `generalizeIndices mvarId "indexed inductive type expected";
|
||||
unless (args.size == val.nindices + val.nparams) $ throwTacticEx `generalizeIndices mvarId "ill-formed inductive datatype";
|
||||
let indices := args.extract (args.size - val.nindices) args.size;
|
||||
let IA := mkAppN f (args.extract 0 val.nparams); -- `I A`
|
||||
IAType ← inferType IA;
|
||||
forallTelescopeReducing IAType $ fun newIndices _ => do
|
||||
let newType := mkAppN IA newIndices;
|
||||
withLocalDeclD fvarDecl.userName newType $ fun h' =>
|
||||
withNewIndexEqs indices newIndices $ fun newEqs newRefls => do
|
||||
(newEqType, newRefl) ← mkEqAndProof fvarDecl.toExpr h';
|
||||
let newRefls := newRefls.push newRefl;
|
||||
withLocalDeclD `h newEqType $ fun newEq => do
|
||||
let newEqs := newEqs.push newEq;
|
||||
unless val.nindices > 0 do throwTacticEx `generalizeIndices mvarId "indexed inductive type expected"
|
||||
unless args.size == val.nindices + val.nparams do throwTacticEx `generalizeIndices mvarId "ill-formed inductive datatype"
|
||||
let indices := args.extract (args.size - val.nindices) args.size
|
||||
let IA := mkAppN f (args.extract 0 val.nparams) -- `I A`
|
||||
let IAType ← inferType IA
|
||||
forallTelescopeReducing IAType fun newIndices _ => do
|
||||
let newType := mkAppN IA newIndices
|
||||
withLocalDeclD fvarDecl.userName newType fun h' =>
|
||||
withNewIndexEqs indices newIndices fun newEqs newRefls => do
|
||||
let (newEqType, newRefl) ← mkEqAndProof fvarDecl.toExpr h'
|
||||
let newRefls := newRefls.push newRefl
|
||||
withLocalDeclD `h newEqType fun newEq => do
|
||||
let newEqs := newEqs.push newEq
|
||||
/- auxType `forall (j' : J) (h' : I A j'), j == j' -> h == h' -> target -/
|
||||
target ← getMVarType mvarId;
|
||||
tag ← getMVarTag mvarId;
|
||||
auxType ← mkForallFVars newEqs target;
|
||||
auxType ← mkForallFVars #[h'] auxType;
|
||||
auxType ← mkForallFVars newIndices auxType;
|
||||
newMVar ← mkFreshExprMVarAt lctx localInsts auxType MetavarKind.syntheticOpaque tag;
|
||||
let target ← getMVarType mvarId
|
||||
let tag ← getMVarTag mvarId
|
||||
let auxType ← mkForallFVars newEqs target
|
||||
let auxType ← mkForallFVars #[h'] auxType
|
||||
let auxType ← mkForallFVars newIndices auxType
|
||||
let newMVar ← mkFreshExprMVarAt lctx localInsts auxType MetavarKind.syntheticOpaque tag
|
||||
/- assign mvarId := newMVar indices h refls -/
|
||||
assignExprMVar mvarId (mkAppN (mkApp (mkAppN newMVar indices) fvarDecl.toExpr) newRefls);
|
||||
(indicesFVarIds, newMVarId) ← introNP newMVar.mvarId! newIndices.size;
|
||||
(fvarId, newMVarId) ← intro1P newMVarId;
|
||||
assignExprMVar mvarId (mkAppN (mkApp (mkAppN newMVar indices) fvarDecl.toExpr) newRefls)
|
||||
let (indicesFVarIds, newMVarId) ← introNP newMVar.mvarId! newIndices.size
|
||||
let (fvarId, newMVarId) ← intro1P newMVarId
|
||||
pure {
|
||||
mvarId := newMVarId,
|
||||
indicesFVarIds := indicesFVarIds,
|
||||
|
|
@ -122,11 +121,12 @@ structure Context :=
|
|||
(majorTypeIndices : Array Expr := majorTypeArgs.extract (majorTypeArgs.size - inductiveVal.nindices) majorTypeArgs.size)
|
||||
|
||||
private def mkCasesContext? (majorFVarId : FVarId) : MetaM (Option Context) := do
|
||||
env ← getEnv;
|
||||
if !env.contains `Eq || !env.contains `HEq then pure none
|
||||
else do
|
||||
majorDecl ← getLocalDecl majorFVarId;
|
||||
majorType ← whnf majorDecl.type;
|
||||
let env ← getEnv
|
||||
if !env.contains `Eq || !env.contains `HEq then
|
||||
pure none
|
||||
else
|
||||
let majorDecl ← getLocalDecl majorFVarId
|
||||
let majorType ← whnf majorDecl.type
|
||||
majorType.withApp fun f args => matchConstInduct f (fun _ => pure none) fun ival _ =>
|
||||
if args.size != ival.nindices + ival.nparams then pure none
|
||||
else match env.find? (mkNameStr ival.name "casesOn") with
|
||||
|
|
@ -146,31 +146,31 @@ We say the major premise has independent indices IF
|
|||
2- its type is an indexed inductive family, but all indices are distinct free variables, and
|
||||
all local declarations different from the major and its indices do not depend on the indices.
|
||||
-/
|
||||
private def hasIndepIndices (ctx : Context) : MetaM Bool :=
|
||||
private def hasIndepIndices (ctx : Context) : MetaM Bool := do
|
||||
if ctx.majorTypeIndices.isEmpty then
|
||||
pure true
|
||||
else if ctx.majorTypeIndices.any $ fun idx => !idx.isFVar then
|
||||
/- One of the indices is not a free variable. -/
|
||||
pure false
|
||||
else if ctx.majorTypeIndices.size.any $ fun i => i.any $ fun j => ctx.majorTypeIndices.get! i == ctx.majorTypeIndices.get! j then
|
||||
else if ctx.majorTypeIndices.size.any fun i => i.any fun j => ctx.majorTypeIndices[i] == ctx.majorTypeIndices[j] then
|
||||
/- An index ocurrs more than once -/
|
||||
pure false
|
||||
else do
|
||||
lctx ← getLCtx;
|
||||
mctx ← getMCtx;
|
||||
pure $ lctx.all $ fun decl =>
|
||||
else
|
||||
let lctx ← getLCtx
|
||||
let mctx ← getMCtx
|
||||
pure $ lctx.all fun decl =>
|
||||
decl.fvarId == ctx.majorDecl.fvarId || -- decl is the major
|
||||
ctx.majorTypeIndices.any (fun index => decl.fvarId == index.fvarId!) || -- decl is one of the indices
|
||||
mctx.findLocalDeclDependsOn decl (fun fvarId => ctx.majorTypeIndices.all $ fun idx => idx.fvarId! != fvarId) -- or does not depend on any index
|
||||
|
||||
private def elimAuxIndices (s₁ : GeneralizeIndicesSubgoal) (s₂ : Array CasesSubgoal) : MetaM (Array CasesSubgoal) :=
|
||||
let indicesFVarIds := s₁.indicesFVarIds;
|
||||
s₂.mapM $ fun s => do
|
||||
let indicesFVarIds := s₁.indicesFVarIds
|
||||
s₂.mapM fun s => do
|
||||
indicesFVarIds.foldlM
|
||||
(fun s indexFVarId =>
|
||||
match s.subst.get indexFVarId with
|
||||
| Expr.fvar indexFVarId' _ =>
|
||||
(do mvarId ← clear s.mvarId indexFVarId'; pure { s with mvarId := mvarId, subst := s.subst.erase indexFVarId })
|
||||
(do let mvarId ← clear s.mvarId indexFVarId'; pure { s with mvarId := mvarId, subst := s.subst.erase indexFVarId })
|
||||
<|>
|
||||
(pure s)
|
||||
| _ => pure s)
|
||||
|
|
@ -181,104 +181,104 @@ s₂.mapM $ fun s => do
|
|||
and adding the substitution `majorFVarId -> ctor_i us params fields` into each subgoal. -/
|
||||
private def toCasesSubgoals (s : Array InductionSubgoal) (ctorNames : Array Name) (majorFVarId : FVarId) (us : List Level) (params : Array Expr)
|
||||
: Array CasesSubgoal :=
|
||||
s.mapIdx $ fun i s =>
|
||||
let ctorName := ctorNames.get! i;
|
||||
let ctorApp := mkAppN (mkAppN (mkConst ctorName us) params) s.fields;
|
||||
let s := { s with subst := s.subst.insert majorFVarId ctorApp };
|
||||
s.mapIdx fun i s =>
|
||||
let ctorName := ctorNames[i]
|
||||
let ctorApp := mkAppN (mkAppN (mkConst ctorName us) params) s.fields
|
||||
let s := { s with subst := s.subst.insert majorFVarId ctorApp }
|
||||
{ ctorName := ctorName,
|
||||
toInductionSubgoal := s }
|
||||
|
||||
private partial def unifyEqsAux : Nat → CasesSubgoal → MetaM (Option CasesSubgoal)
|
||||
| 0, s => do
|
||||
trace! `Meta.Tactic.cases ("unifyEqs " ++ MessageData.ofGoal s.mvarId);
|
||||
trace! `Meta.Tactic.cases ("unifyEqs " ++ MessageData.ofGoal s.mvarId)
|
||||
pure (some s)
|
||||
| n+1, s => do
|
||||
trace! `Meta.Tactic.cases ("unifyEqs [" ++ toString (n+1) ++ "] " ++ MessageData.ofGoal s.mvarId);
|
||||
(eqFVarId, mvarId) ← intro1 s.mvarId;
|
||||
withMVarContext mvarId $ do
|
||||
eqDecl ← getLocalDecl eqFVarId;
|
||||
trace[Meta.Tactic.cases]! "unifyEqs [{n+1}] {MessageData.ofGoal s.mvarId}"
|
||||
let (eqFVarId, mvarId) ← intro1 s.mvarId
|
||||
withMVarContext mvarId do
|
||||
let eqDecl ← getLocalDecl eqFVarId
|
||||
match eqDecl.type.heq? with
|
||||
| some (α, a, β, b) => do
|
||||
prf ← mkEqOfHEq (mkFVar eqFVarId);
|
||||
aEqb ← mkEq a b;
|
||||
mvarId ← assert mvarId eqDecl.userName aEqb prf;
|
||||
mvarId ← clear mvarId eqFVarId;
|
||||
let prf ← mkEqOfHEq (mkFVar eqFVarId)
|
||||
let aEqb ← mkEq a b
|
||||
let mvarId ← assert mvarId eqDecl.userName aEqb prf
|
||||
let mvarId ← clear mvarId eqFVarId
|
||||
unifyEqsAux (n+1) { s with mvarId := mvarId }
|
||||
| none => match eqDecl.type.eq? with
|
||||
| some (α, a, b) =>
|
||||
let skip : Unit → MetaM (Option CasesSubgoal) := fun _ => do {
|
||||
mvarId ← clear mvarId eqFVarId;
|
||||
let skip : Unit → MetaM (Option CasesSubgoal) := fun _ => do
|
||||
let mvarId ← clear mvarId eqFVarId
|
||||
unifyEqsAux n { s with mvarId := mvarId }
|
||||
};
|
||||
let substEq (symm : Bool) : MetaM (Option CasesSubgoal) := do {
|
||||
(newSubst, mvarId) ← substCore mvarId eqFVarId symm s.subst;
|
||||
let substEq (symm : Bool) : MetaM (Option CasesSubgoal) := do
|
||||
let (newSubst, mvarId) ← substCore mvarId eqFVarId symm s.subst
|
||||
unifyEqsAux n {
|
||||
s with
|
||||
mvarId := mvarId,
|
||||
subst := newSubst,
|
||||
fields := s.fields.map $ fun field => newSubst.apply field
|
||||
}
|
||||
};
|
||||
let inj : Unit → MetaM (Option CasesSubgoal) := fun _ => do {
|
||||
r ← injectionCore mvarId eqFVarId;
|
||||
let inj : Unit → MetaM (Option CasesSubgoal) := fun _ => do
|
||||
let r ← injectionCore mvarId eqFVarId
|
||||
match r with
|
||||
| InjectionResultCore.solved => pure none -- this alternative has been solved
|
||||
| InjectionResultCore.subgoal mvarId numEqs => unifyEqsAux (n+numEqs) { s with mvarId := mvarId }
|
||||
};
|
||||
condM (isDefEq a b) (skip ()) $ do
|
||||
a' ← whnf a;
|
||||
b' ← whnf b;
|
||||
if a' != a || b' != b then do
|
||||
let prf := mkFVar eqFVarId;
|
||||
aEqb' ← mkEq a' b';
|
||||
mvarId ← assert mvarId eqDecl.userName aEqb' prf;
|
||||
mvarId ← clear mvarId eqFVarId;
|
||||
unifyEqsAux (n+1) { s with mvarId := mvarId }
|
||||
if (← isDefEq a b) then
|
||||
skip ()
|
||||
else
|
||||
match a, b with
|
||||
| Expr.fvar aFVarId _, Expr.fvar bFVarId _ => do aDecl ← getLocalDecl aFVarId; bDecl ← getLocalDecl bFVarId; substEq (aDecl.index < bDecl.index)
|
||||
| Expr.fvar _ _, _ => substEq false
|
||||
| _, Expr.fvar _ _ => substEq true
|
||||
| _, _ => inj ()
|
||||
let a' ← whnf a
|
||||
let b' ← whnf b
|
||||
if a' != a || b' != b then do
|
||||
let prf := mkFVar eqFVarId
|
||||
let aEqb' ← mkEq a' b'
|
||||
let mvarId ← assert mvarId eqDecl.userName aEqb' prf
|
||||
let mvarId ← clear mvarId eqFVarId
|
||||
unifyEqsAux (n+1) { s with mvarId := mvarId }
|
||||
else
|
||||
match a, b with
|
||||
| Expr.fvar aFVarId _, Expr.fvar bFVarId _ => do
|
||||
let aDecl ← getLocalDecl aFVarId
|
||||
let bDecl ← getLocalDecl bFVarId
|
||||
substEq (aDecl.index < bDecl.index)
|
||||
| Expr.fvar _ _, _ => substEq false
|
||||
| _, Expr.fvar _ _ => substEq true
|
||||
| _, _ => inj ()
|
||||
| none => throwTacticEx `cases mvarId "equality expected"
|
||||
|
||||
private def unifyEqs (numEqs : Nat) (subgoals : Array CasesSubgoal) : MetaM (Array CasesSubgoal) :=
|
||||
subgoals.foldlM
|
||||
(fun subgoals s => do
|
||||
s? ← unifyEqsAux numEqs s;
|
||||
match s? with
|
||||
| none => pure $ subgoals
|
||||
| some s => pure $ subgoals.push s)
|
||||
#[]
|
||||
subgoals.foldlM (init := #[]) fun subgoals s => do
|
||||
let s? ← unifyEqsAux numEqs s
|
||||
match s? with
|
||||
| none => pure $ subgoals
|
||||
| some s => pure $ subgoals.push s
|
||||
|
||||
private def inductionCasesOn (mvarId : MVarId) (majorFVarId : FVarId) (givenNames : Array (List Name)) (useUnusedNames : Bool) (ctx : Context)
|
||||
: MetaM (Array CasesSubgoal) := do
|
||||
withMVarContext mvarId do
|
||||
majorType ← inferType (mkFVar majorFVarId);
|
||||
(us, params) ← getInductiveUniverseAndParams majorType;
|
||||
let casesOn := mkCasesOnFor ctx.inductiveVal.name;
|
||||
let ctors := ctx.inductiveVal.ctors.toArray;
|
||||
s ← induction mvarId majorFVarId casesOn givenNames useUnusedNames;
|
||||
let majorType ← inferType (mkFVar majorFVarId)
|
||||
let (us, params) ← getInductiveUniverseAndParams majorType
|
||||
let casesOn := mkCasesOnFor ctx.inductiveVal.name
|
||||
let ctors := ctx.inductiveVal.ctors.toArray
|
||||
let s ← induction mvarId majorFVarId casesOn givenNames useUnusedNames
|
||||
pure $ toCasesSubgoals s ctors majorFVarId us params
|
||||
|
||||
def cases (mvarId : MVarId) (majorFVarId : FVarId) (givenNames : Array (List Name) := #[]) (useUnusedNames := false) : MetaM (Array CasesSubgoal) :=
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `cases;
|
||||
context? ← mkCasesContext? majorFVarId;
|
||||
checkNotAssigned mvarId `cases
|
||||
let context? ← mkCasesContext? majorFVarId
|
||||
match context? with
|
||||
| none => throwTacticEx `cases mvarId "not applicable to the given hypothesis"
|
||||
| some ctx =>
|
||||
/- Remark: if caller does not need a `FVarSubst` (variable substitution), and `hasIndepIndices ctx` is true,
|
||||
then we can also use the simple case. This is a minor optimization, and we currently do not even
|
||||
allow callers to specify whether they want the `FVarSubst` or not. -/
|
||||
if ctx.inductiveVal.nindices == 0 then do
|
||||
if ctx.inductiveVal.nindices == 0 then
|
||||
-- Simple case
|
||||
inductionCasesOn mvarId majorFVarId givenNames useUnusedNames ctx
|
||||
else do
|
||||
s₁ ← generalizeIndices mvarId majorFVarId;
|
||||
trace! `Meta.Tactic.cases ("after generalizeIndices" ++ Format.line ++ MessageData.ofGoal s₁.mvarId);
|
||||
s₂ ← inductionCasesOn s₁.mvarId s₁.fvarId givenNames useUnusedNames ctx;
|
||||
s₂ ← elimAuxIndices s₁ s₂;
|
||||
else
|
||||
let s₁ ← generalizeIndices mvarId majorFVarId
|
||||
trace[Meta.Tactic.cases]! "after generalizeIndices\n{MessageData.ofGoal s₁.mvarId}"
|
||||
let s₂ ← inductionCasesOn s₁.mvarId s₁.fvarId givenNames useUnusedNames ctx
|
||||
let s₂ ← elimAuxIndices s₁ s₂
|
||||
unifyEqs s₁.numEqs s₂
|
||||
|
||||
end Cases
|
||||
|
|
@ -286,8 +286,6 @@ end Cases
|
|||
def cases (mvarId : MVarId) (majorFVarId : FVarId) (givenNames : Array (List Name) := #[]) (useUnusedNames := false) : MetaM (Array CasesSubgoal) :=
|
||||
Cases.cases mvarId majorFVarId givenNames useUnusedNames
|
||||
|
||||
@[init] private def regTraceClasses : IO Unit := do
|
||||
registerTraceClass `Meta.Tactic.cases
|
||||
initialize registerTraceClass `Meta.Tactic.cases
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
45
stage0/src/Lean/Meta/Tactic/Clear.lean
generated
45
stage0/src/Lean/Meta/Tactic/Clear.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -5,35 +6,33 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
import Lean.Meta.Tactic.Util
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
def clear (mvarId : MVarId) (fvarId : FVarId) : MetaM MVarId :=
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `clear;
|
||||
lctx ← getLCtx;
|
||||
unless (lctx.contains fvarId) $
|
||||
throwTacticEx `clear mvarId ("unknown variable '" ++ mkFVar fvarId ++ "'");
|
||||
tag ← getMVarTag mvarId;
|
||||
mctx ← getMCtx;
|
||||
lctx.forM $ fun localDecl =>
|
||||
unless (localDecl.fvarId == fvarId) $
|
||||
when (mctx.localDeclDependsOn localDecl fvarId) $
|
||||
throwTacticEx `clear mvarId ("variable '" ++ localDecl.toExpr ++ "' depends on '" ++ mkFVar fvarId ++ "'");
|
||||
mvarDecl ← getMVarDecl mvarId;
|
||||
when (mctx.exprDependsOn mvarDecl.type fvarId) $
|
||||
throwTacticEx `clear mvarId ("taget depends on '" ++ mkFVar fvarId ++ "'");
|
||||
let lctx := lctx.erase fvarId;
|
||||
localInsts ← getLocalInstances;
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `clear
|
||||
let lctx ← getLCtx
|
||||
unless lctx.contains fvarId do
|
||||
throwTacticEx `clear mvarId msg!"unknown variable '{mkFVar fvarId}'"
|
||||
let tag ← getMVarTag mvarId
|
||||
let mctx ← getMCtx
|
||||
lctx.forM fun localDecl => do
|
||||
unless localDecl.fvarId == fvarId do
|
||||
if mctx.localDeclDependsOn localDecl fvarId then
|
||||
throwTacticEx `clear mvarId msg!"variable '{localDecl.toExpr}' depends on '{mkFVar fvarId}'"
|
||||
let mvarDecl ← getMVarDecl mvarId
|
||||
if mctx.exprDependsOn mvarDecl.type fvarId then
|
||||
throwTacticEx `clear mvarId msg!"taget depends on '{mkFVar fvarId}'"
|
||||
let lctx := lctx.erase fvarId
|
||||
let localInsts ← getLocalInstances
|
||||
let localInsts := match localInsts.findIdx? $ fun localInst => localInst.fvar.fvarId! == fvarId with
|
||||
| none => localInsts
|
||||
| some idx => localInsts.eraseIdx idx;
|
||||
newMVar ← mkFreshExprMVarAt lctx localInsts mvarDecl.type MetavarKind.syntheticOpaque tag;
|
||||
assignExprMVar mvarId newMVar;
|
||||
| some idx => localInsts.eraseIdx idx
|
||||
let newMVar ← mkFreshExprMVarAt lctx localInsts mvarDecl.type MetavarKind.syntheticOpaque tag
|
||||
assignExprMVar mvarId newMVar
|
||||
pure newMVar.mvarId!
|
||||
|
||||
def tryClear (mvarId : MVarId) (fvarId : FVarId) : MetaM MVarId :=
|
||||
clear mvarId fvarId <|> pure mvarId
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
4
stage0/src/Lean/Meta/Tactic/FVarSubst.lean
generated
4
stage0/src/Lean/Meta/Tactic/FVarSubst.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -8,8 +9,7 @@ import Lean.Expr
|
|||
import Lean.LocalContext
|
||||
import Lean.Util.ReplaceExpr
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
/-
|
||||
Some tactics substitute hypotheses with expressions.
|
||||
We track these substitutions using `FVarSubst`.
|
||||
|
|
|
|||
35
stage0/src/Lean/Meta/Tactic/Generalize.lean
generated
35
stage0/src/Lean/Meta/Tactic/Generalize.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -6,25 +7,23 @@ Authors: Leonardo de Moura
|
|||
import Lean.Meta.KAbstract
|
||||
import Lean.Meta.Tactic.Util
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
def generalize (mvarId : MVarId) (e : Expr) (x : Name) (failIfNotInTarget : Bool := true) : MetaM MVarId := do
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `generalize;
|
||||
tag ← getMVarTag mvarId;
|
||||
target ← getMVarType mvarId;
|
||||
target ← instantiateMVars target;
|
||||
targetAbst ← kabstract target e;
|
||||
when (failIfNotInTarget && !targetAbst.hasLooseBVars) $
|
||||
throwTacticEx `generalize mvarId ("failed to find expression in the target");
|
||||
eType ← inferType e;
|
||||
let targetNew := Lean.mkForall x BinderInfo.default eType targetAbst;
|
||||
unlessM (isTypeCorrect targetNew) $
|
||||
throwTacticEx `generalize mvarId ("result is not type correct");
|
||||
mvarNew ← mkFreshExprSyntheticOpaqueMVar targetNew tag;
|
||||
assignExprMVar mvarId (mkApp mvarNew e);
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `generalize
|
||||
let tag ← getMVarTag mvarId
|
||||
let target ← getMVarType mvarId
|
||||
let target ← instantiateMVars target
|
||||
let targetAbst ← kabstract target e
|
||||
if failIfNotInTarget && !targetAbst.hasLooseBVars then
|
||||
throwTacticEx `generalize mvarId "failed to find expression in the target"
|
||||
let eType ← inferType e
|
||||
let targetNew := Lean.mkForall x BinderInfo.default eType targetAbst
|
||||
unless (← isTypeCorrect targetNew) do
|
||||
throwTacticEx `generalize mvarId "result is not type correct"
|
||||
let mvarNew ← mkFreshExprSyntheticOpaqueMVar targetNew tag
|
||||
assignExprMVar mvarId (mkApp mvarNew e)
|
||||
pure mvarNew.mvarId!
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
279
stage0/src/Lean/Meta/Tactic/Induction.lean
generated
279
stage0/src/Lean/Meta/Tactic/Induction.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -11,8 +12,7 @@ import Lean.Meta.Tactic.Intro
|
|||
import Lean.Meta.Tactic.Clear
|
||||
import Lean.Meta.Tactic.FVarSubst
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
private partial def getTargetArity : Expr → Nat
|
||||
| Expr.mdata _ b _ => getTargetArity b
|
||||
|
|
@ -20,19 +20,19 @@ private partial def getTargetArity : Expr → Nat
|
|||
| e => if e.isHeadBetaTarget then getTargetArity e.headBeta else 0
|
||||
|
||||
private def addRecParams (mvarId : MVarId) (majorTypeArgs : Array Expr) : List (Option Nat) → Expr → MetaM Expr
|
||||
| [], rec => pure rec
|
||||
| some pos :: rest, rec =>
|
||||
| [], recursor => pure recursor
|
||||
| some pos :: rest, recursor =>
|
||||
if h : pos < majorTypeArgs.size then
|
||||
addRecParams rest (mkApp rec (majorTypeArgs.get ⟨pos, h⟩))
|
||||
addRecParams mvarId majorTypeArgs rest (mkApp recursor (majorTypeArgs.get ⟨pos, h⟩))
|
||||
else
|
||||
throwTacticEx `induction mvarId ("ill-formed recursor")
|
||||
| none :: rest, rec => do
|
||||
recType ← inferType rec;
|
||||
recType ← whnfForall recType;
|
||||
match recType with
|
||||
throwTacticEx `induction mvarId "ill-formed recursor"
|
||||
| none :: rest, recursor => do
|
||||
let recursorType ← inferType recursor
|
||||
let recursorType ← whnfForall recursorType
|
||||
match recursorType with
|
||||
| Expr.forallE _ d _ _ => do
|
||||
param ← catch (synthInstance d) (fun _ => throwTacticEx `induction mvarId "failed to generate type class instance parameter");
|
||||
addRecParams rest (mkApp rec param)
|
||||
let param ← try synthInstance d catch _ => throwTacticEx `induction mvarId "failed to generate type class instance parameter"
|
||||
addRecParams mvarId majorTypeArgs rest (mkApp recursor param)
|
||||
| _ =>
|
||||
throwTacticEx `induction mvarId ("ill-formed recursor")
|
||||
|
||||
|
|
@ -44,176 +44,157 @@ structure InductionSubgoal :=
|
|||
instance InductionSubgoal.inhabited : Inhabited InductionSubgoal := ⟨{ mvarId := arbitrary _ }⟩
|
||||
|
||||
private def getTypeBody (mvarId : MVarId) (type : Expr) (x : Expr) : MetaM Expr := do
|
||||
type ← whnfForall type;
|
||||
type ← whnfForall type
|
||||
match type with
|
||||
| Expr.forallE _ _ b _ => pure $ b.instantiate1 x
|
||||
| _ => throwTacticEx `induction mvarId "ill-formed recursor"
|
||||
|
||||
private partial def finalizeAux
|
||||
(mvarId : MVarId) (givenNames : Array (List Name)) (recInfo : RecursorInfo)
|
||||
(reverted : Array FVarId) (major : Expr) (initialArity : Nat) (indices : Array Expr) (numMinors : Nat) (baseSubst : FVarSubst)
|
||||
: Nat → Nat → Expr → Expr → Bool → Array InductionSubgoal → MetaM (Array InductionSubgoal)
|
||||
| pos, minorIdx, rec, recType, consumedMajor, subgoals => do
|
||||
recType ← whnfForall recType;
|
||||
if recType.isForall && pos < recInfo.numArgs then
|
||||
if pos == recInfo.firstIndexPos then do
|
||||
(rec, recType) ← indices.foldlM
|
||||
(fun (acc : Expr × Expr) (index : Expr) => do
|
||||
let (rec, recType) := acc;
|
||||
let rec := mkApp rec index;
|
||||
recType ← getTypeBody mvarId recType index;
|
||||
pure (rec, recType))
|
||||
(rec, recType);
|
||||
let rec := mkApp rec major;
|
||||
recType ← getTypeBody mvarId recType major;
|
||||
finalizeAux (pos+1+indices.size) minorIdx rec recType true subgoals
|
||||
else do
|
||||
private partial def finalize
|
||||
(mvarId : MVarId) (givenNames : Array (List Name)) (recursorInfo : RecursorInfo)
|
||||
(reverted : Array FVarId) (major : Expr) (indices : Array Expr) (baseSubst : FVarSubst) (recursor : Expr)
|
||||
: MetaM (Array InductionSubgoal) := do
|
||||
let target ← getMVarType mvarId
|
||||
let initialArity := getTargetArity target
|
||||
let recursorType ← inferType recursor
|
||||
let numMinors := recursorInfo.produceMotive.length
|
||||
let rec loop (pos : Nat) (minorIdx : Nat) (recursor recursorType : Expr) (consumedMajor : Bool) (subgoals : Array InductionSubgoal) := do
|
||||
let recursorType ← whnfForall recursorType
|
||||
if recursorType.isForall && pos < recursorInfo.numArgs then
|
||||
if pos == recursorInfo.firstIndexPos then
|
||||
let (recursor, recursorType) ← indices.foldlM (init := (recursor, recursorType)) fun (recursor, recursorType) index => do
|
||||
let recursor := mkApp recursor index
|
||||
let recursorType ← getTypeBody mvarId recursorType index
|
||||
pure (recursor, recursorType)
|
||||
let recursor := mkApp recursor major
|
||||
let recursorType ← getTypeBody mvarId recursorType major
|
||||
loop (pos+1+indices.size) minorIdx recursor recursorType true subgoals
|
||||
else
|
||||
-- consume motive
|
||||
tag ← getMVarTag mvarId;
|
||||
when (minorIdx ≥ numMinors) $ throwTacticEx `induction mvarId "ill-formed recursor";
|
||||
match recType with
|
||||
let tag ← getMVarTag mvarId
|
||||
if minorIdx ≥ numMinors then throwTacticEx `induction mvarId "ill-formed recursor"
|
||||
match recursorType with
|
||||
| Expr.forallE n d b c =>
|
||||
let d := d.headBeta;
|
||||
let d := d.headBeta
|
||||
-- Remark is givenNames is not empty, then user provided explicit alternatives for each minor premise
|
||||
if c.binderInfo.isInstImplicit && givenNames.isEmpty then do
|
||||
inst? ← synthInstance? d;
|
||||
if c.binderInfo.isInstImplicit && givenNames.isEmpty then
|
||||
let inst? ← synthInstance? d
|
||||
match inst? with
|
||||
| some inst => do
|
||||
let rec := mkApp rec inst;
|
||||
recType ← getTypeBody mvarId recType inst;
|
||||
finalizeAux (pos+1) (minorIdx+1) rec recType consumedMajor subgoals
|
||||
| some inst =>
|
||||
let recursor := mkApp recursor inst
|
||||
let recursorType ← getTypeBody mvarId recursorType inst
|
||||
loop (pos+1) (minorIdx+1) recursor recursorType consumedMajor subgoals
|
||||
| none => do
|
||||
-- Add newSubgoal if type class resolution failed
|
||||
mvar ← mkFreshExprSyntheticOpaqueMVar d (tag ++ n);
|
||||
let rec := mkApp rec mvar;
|
||||
recType ← getTypeBody mvarId recType mvar;
|
||||
finalizeAux (pos+1) (minorIdx+1) rec recType consumedMajor (subgoals.push { mvarId := mvar.mvarId! })
|
||||
else do
|
||||
let arity := getTargetArity d;
|
||||
when (arity < initialArity) $ throwTacticEx `induction mvarId "ill-formed recursor";
|
||||
let nparams := arity - initialArity; -- number of fields due to minor premise
|
||||
let nextra := reverted.size - indices.size - 1; -- extra dependencies that have been reverted
|
||||
let minorGivenNames := if h : minorIdx < givenNames.size then givenNames.get ⟨minorIdx, h⟩ else [];
|
||||
mvar ← mkFreshExprSyntheticOpaqueMVar d (tag ++ n);
|
||||
let rec := mkApp rec mvar;
|
||||
recType ← getTypeBody mvarId recType mvar;
|
||||
let mvar ← mkFreshExprSyntheticOpaqueMVar d (tag ++ n)
|
||||
let recursor := mkApp recursor mvar
|
||||
let recursorType ← getTypeBody mvarId recursorType mvar
|
||||
loop (pos+1) (minorIdx+1) recursor recursorType consumedMajor (subgoals.push { mvarId := mvar.mvarId! })
|
||||
else
|
||||
let arity := getTargetArity d
|
||||
if arity < initialArity then throwTacticEx `induction mvarId "ill-formed recursor"
|
||||
let nparams := arity - initialArity -- number of fields due to minor premise
|
||||
let nextra := reverted.size - indices.size - 1 -- extra dependencies that have been reverted
|
||||
let minorGivenNames := if h : minorIdx < givenNames.size then givenNames.get ⟨minorIdx, h⟩ else []
|
||||
let mvar ← mkFreshExprSyntheticOpaqueMVar d (tag ++ n)
|
||||
let recursor := mkApp recursor mvar
|
||||
let recursorType ← getTypeBody mvarId recursorType mvar
|
||||
-- Try to clear major premise from new goal
|
||||
mvarId' ← tryClear mvar.mvarId! major.fvarId!;
|
||||
(fields, mvarId') ← introN mvarId' nparams minorGivenNames;
|
||||
(extra, mvarId') ← introNP mvarId' nextra;
|
||||
let subst := reverted.size.fold
|
||||
(fun i (subst : FVarSubst) =>
|
||||
let mvarId' ← tryClear mvar.mvarId! major.fvarId!
|
||||
let (fields, mvarId') ← introN mvarId' nparams minorGivenNames
|
||||
let (extra, mvarId') ← introNP mvarId' nextra
|
||||
let subst := reverted.size.fold (init := baseSubst) fun i (subst : FVarSubst) =>
|
||||
if i < indices.size + 1 then subst
|
||||
else
|
||||
let revertedFVarId := reverted.get! i;
|
||||
let newFVarId := extra.get! (i - indices.size - 1);
|
||||
subst.insert revertedFVarId (mkFVar newFVarId))
|
||||
baseSubst;
|
||||
let fields := fields.map mkFVar;
|
||||
finalizeAux (pos+1) (minorIdx+1) rec recType consumedMajor (subgoals.push { mvarId := mvarId', fields := fields, subst := subst })
|
||||
let revertedFVarId := reverted[i]
|
||||
let newFVarId := extra[i - indices.size - 1]
|
||||
subst.insert revertedFVarId (mkFVar newFVarId)
|
||||
let fields := fields.map mkFVar
|
||||
loop (pos+1) (minorIdx+1) recursor recursorType consumedMajor (subgoals.push { mvarId := mvarId', fields := fields, subst := subst })
|
||||
| _ => unreachable!
|
||||
else do
|
||||
unless consumedMajor $ throwTacticEx `induction mvarId "ill-formed recursor";
|
||||
assignExprMVar mvarId rec;
|
||||
else
|
||||
unless consumedMajor do throwTacticEx `induction mvarId "ill-formed recursor"
|
||||
assignExprMVar mvarId recursor
|
||||
pure subgoals
|
||||
|
||||
private def finalize
|
||||
(mvarId : MVarId) (givenNames : Array (List Name)) (recInfo : RecursorInfo)
|
||||
(reverted : Array FVarId) (major : Expr) (indices : Array Expr) (baseSubst : FVarSubst) (rec : Expr)
|
||||
: MetaM (Array InductionSubgoal) := do
|
||||
target ← getMVarType mvarId;
|
||||
let initialArity := getTargetArity target;
|
||||
recType ← inferType rec;
|
||||
let numMinors := recInfo.produceMotive.length;
|
||||
finalizeAux mvarId givenNames recInfo reverted major initialArity indices numMinors baseSubst (recInfo.paramsPos.length + 1) 0 rec recType false #[]
|
||||
loop (recursorInfo.paramsPos.length + 1) 0 recursor recursorType false #[]
|
||||
|
||||
private def throwUnexpectedMajorType {α} (mvarId : MVarId) (majorType : Expr) : MetaM α :=
|
||||
throwTacticEx `induction mvarId ("unexpected major premise type " ++ indentExpr majorType)
|
||||
throwTacticEx `induction mvarId msg!"unexpected major premise type{indentExpr majorType}"
|
||||
|
||||
def induction (mvarId : MVarId) (majorFVarId : FVarId) (recName : Name) (givenNames : Array (List Name) := #[]) (useUnusedNames := false) :
|
||||
def induction (mvarId : MVarId) (majorFVarId : FVarId) (recursorName : Name) (givenNames : Array (List Name) := #[]) (useUnusedNames := false) :
|
||||
MetaM (Array InductionSubgoal) :=
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `induction;
|
||||
majorLocalDecl ← getLocalDecl majorFVarId;
|
||||
recInfo ← mkRecursorInfo recName;
|
||||
some majorType ← whnfUntil majorLocalDecl.type recInfo.typeName | throwUnexpectedMajorType mvarId majorLocalDecl.type;
|
||||
majorType.withApp $ fun _ majorTypeArgs => do
|
||||
recInfo.paramsPos.forM $ fun paramPos? => do {
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `induction
|
||||
let majorLocalDecl ← getLocalDecl majorFVarId
|
||||
let recursorInfo ← mkRecursorInfo recursorName
|
||||
let some majorType ← whnfUntil majorLocalDecl.type recursorInfo.typeName | throwUnexpectedMajorType mvarId majorLocalDecl.type
|
||||
majorType.withApp fun _ majorTypeArgs => do
|
||||
recursorInfo.paramsPos.forM fun paramPos? => do
|
||||
match paramPos? with
|
||||
| none => pure ()
|
||||
| some paramPos => when (paramPos ≥ majorTypeArgs.size) $ throwTacticEx `induction mvarId ("major premise type is ill-formed" ++ indentExpr majorType)
|
||||
};
|
||||
mctx ← getMCtx;
|
||||
indices ← recInfo.indicesPos.toArray.mapM $ fun idxPos => do {
|
||||
when (idxPos ≥ majorTypeArgs.size) $ throwTacticEx `induction mvarId ("major premise type is ill-formed" ++ indentExpr majorType);
|
||||
let idx := majorTypeArgs.get! idxPos;
|
||||
unless idx.isFVar $ throwTacticEx `induction mvarId ("major premise type index " ++ idx ++ " is not variable " ++ indentExpr majorType);
|
||||
majorTypeArgs.size.forM $ fun i => do {
|
||||
let arg := majorTypeArgs.get! i;
|
||||
when (i != idxPos && arg == idx) $
|
||||
throwTacticEx `induction mvarId ("'" ++ idx ++ "' is an index in major premise, but it occurs more than once" ++ indentExpr majorType);
|
||||
when (i < idxPos && mctx.exprDependsOn arg idx.fvarId!) $
|
||||
throwTacticEx `induction mvarId ("'" ++ idx ++ "' is an index in major premise, but it occurs in previous arguments" ++ indentExpr majorType);
|
||||
| some paramPos => if paramPos ≥ majorTypeArgs.size then throwTacticEx `induction mvarId msg!"major premise type is ill-formed{indentExpr majorType}"
|
||||
let mctx ← getMCtx
|
||||
let indices ← recursorInfo.indicesPos.toArray.mapM fun idxPos => do
|
||||
if idxPos ≥ majorTypeArgs.size then throwTacticEx `induction mvarId msg!"major premise type is ill-formed{indentExpr majorType}"
|
||||
let idx := majorTypeArgs.get! idxPos
|
||||
unless idx.isFVar do throwTacticEx `induction mvarId msg!"major premise type index {idx} is not variable{indentExpr majorType}"
|
||||
majorTypeArgs.size.forM fun i => do
|
||||
let arg := majorTypeArgs[i]
|
||||
if i != idxPos && arg == idx then
|
||||
throwTacticEx `induction mvarId msg!"'{idx}' is an index in major premise, but it occurs more than once{indentExpr majorType}"
|
||||
if i < idxPos && mctx.exprDependsOn arg idx.fvarId! then
|
||||
throwTacticEx `induction mvarId msg!"'{idx}' is an index in major premise, but it occurs in previous arguments{indentExpr majorType}"
|
||||
-- If arg is also and index and a variable occurring after `idx`, we need to make sure it doesn't depend on `idx`.
|
||||
-- Note that if `arg` is not a variable, we will fail anyway when we visit it.
|
||||
when (i > idxPos && recInfo.indicesPos.contains i && arg.isFVar) $ do {
|
||||
idxDecl ← getLocalDecl idx.fvarId!;
|
||||
when (mctx.localDeclDependsOn idxDecl arg.fvarId!) $
|
||||
throwTacticEx `induction mvarId ("'" ++ idx ++ "' is an index in major premise, but it depends on index occurring at position #" ++ toString (i+1))
|
||||
}
|
||||
};
|
||||
if i > idxPos && recursorInfo.indicesPos.contains i && arg.isFVar then
|
||||
let idxDecl ← getLocalDecl idx.fvarId!
|
||||
if mctx.localDeclDependsOn idxDecl arg.fvarId! then
|
||||
throwTacticEx `induction mvarId msg!"'{idx}' is an index in major premise, but it depends on index occurring at position #{i+1}"
|
||||
pure idx
|
||||
};
|
||||
target ← getMVarType mvarId;
|
||||
when (!recInfo.depElim && mctx.exprDependsOn target majorFVarId) $
|
||||
throwTacticEx `induction mvarId ("recursor '" ++ recName ++ "' does not support dependent elimination, but conclusion depends on major premise");
|
||||
let target ← getMVarType mvarId
|
||||
if !recursorInfo.depElim && mctx.exprDependsOn target majorFVarId then
|
||||
throwTacticEx `induction mvarId msg!"recursor '{recursorName}' does not support dependent elimination, but conclusion depends on major premise"
|
||||
-- Revert indices and major premise preserving variable order
|
||||
(reverted, mvarId) ← revert mvarId ((indices.map Expr.fvarId!).push majorFVarId) true;
|
||||
let (reverted, mvarId) ← revert mvarId ((indices.map Expr.fvarId!).push majorFVarId) true
|
||||
-- Re-introduce indices and major
|
||||
(indices', mvarId) ← introNP mvarId indices.size;
|
||||
(majorFVarId', mvarId) ← intro1P mvarId;
|
||||
let (indices', mvarId) ← introNP mvarId indices.size
|
||||
let (majorFVarId', mvarId) ← intro1P mvarId
|
||||
-- Create FVarSubst with indices
|
||||
let baseSubst : FVarSubst := indices.iterate {} (fun i index subst => subst.insert index.fvarId! (mkFVar (indices'.get! i.val)));
|
||||
trace! `Meta.Tactic.induction ("after revert&intro" ++ Format.line ++ MessageData.ofGoal mvarId);
|
||||
let baseSubst : FVarSubst := indices.iterate {} (fun i index subst => subst.insert index.fvarId! (mkFVar (indices'.get! i.val)))
|
||||
trace[Meta.Tactic.induction]! "after revert&intro\n{MessageData.ofGoal mvarId}"
|
||||
-- Update indices and major
|
||||
let indices := indices'.map mkFVar;
|
||||
let majorFVarId := majorFVarId';
|
||||
let major := mkFVar majorFVarId;
|
||||
withMVarContext mvarId $ do
|
||||
target ← getMVarType mvarId;
|
||||
targetLevel ← getLevel target;
|
||||
targetLevel ← normalizeLevel targetLevel;
|
||||
majorLocalDecl ← getLocalDecl majorFVarId;
|
||||
some majorType ← whnfUntil majorLocalDecl.type recInfo.typeName | throwUnexpectedMajorType mvarId majorLocalDecl.type;
|
||||
let indices := indices'.map mkFVar
|
||||
let majorFVarId := majorFVarId'
|
||||
let major := mkFVar majorFVarId
|
||||
withMVarContext mvarId do
|
||||
let target ← getMVarType mvarId
|
||||
let targetLevel ← getLevel target
|
||||
let targetLevel ← normalizeLevel targetLevel
|
||||
let majorLocalDecl ← getLocalDecl majorFVarId
|
||||
let some majorType ← whnfUntil majorLocalDecl.type recursorInfo.typeName | throwUnexpectedMajorType mvarId majorLocalDecl.type
|
||||
majorType.withApp fun majorTypeFn majorTypeArgs => do
|
||||
match majorTypeFn with
|
||||
| Expr.const majorTypeFnName majorTypeFnLevels _ => do
|
||||
let majorTypeFnLevels := majorTypeFnLevels.toArray;
|
||||
(recLevels, foundTargetLevel) ← recInfo.univLevelPos.foldlM
|
||||
(fun (result : Array Level × Bool) (univPos : RecursorUnivLevelPos) =>
|
||||
let (recLevels, foundTargetLevel) := result;
|
||||
match univPos with
|
||||
| RecursorUnivLevelPos.motive => pure (recLevels.push targetLevel, true)
|
||||
| RecursorUnivLevelPos.majorType idx => do
|
||||
when (idx ≥ majorTypeFnLevels.size) $
|
||||
throwTacticEx `induction mvarId ("ill-formed recursor");
|
||||
pure (recLevels.push (majorTypeFnLevels.get! idx), foundTargetLevel))
|
||||
(#[], false);
|
||||
when (!foundTargetLevel && !targetLevel.isZero) $
|
||||
throwTacticEx `induction mvarId ("recursor '" ++ recName ++ "' can only eliminate into Prop");
|
||||
let rec := mkConst recName recLevels.toList;
|
||||
rec ← addRecParams mvarId majorTypeArgs recInfo.paramsPos rec;
|
||||
let majorTypeFnLevels := majorTypeFnLevels.toArray
|
||||
let (recursorLevels, foundTargetLevel) ← recursorInfo.univLevelPos.foldlM (init := (#[], false))
|
||||
fun (recursorLevels, foundTargetLevel) (univPos : RecursorUnivLevelPos) => do
|
||||
match univPos with
|
||||
| RecursorUnivLevelPos.motive => pure (recursorLevels.push targetLevel, true)
|
||||
| RecursorUnivLevelPos.majorType idx =>
|
||||
if idx ≥ majorTypeFnLevels.size then throwTacticEx `induction mvarId "ill-formed recursor"
|
||||
pure (recursorLevels.push (majorTypeFnLevels.get! idx), foundTargetLevel)
|
||||
if !foundTargetLevel && !targetLevel.isZero then
|
||||
throwTacticEx `induction mvarId msg!"recursor '{recursorName}' can only eliminate into Prop"
|
||||
let recursor := mkConst recursorName recursorLevels.toList
|
||||
let recursor ← addRecParams mvarId majorTypeArgs recursorInfo.paramsPos recursor
|
||||
-- Compute motive
|
||||
let motive := target;
|
||||
motive ← if recInfo.depElim then mkLambdaFVars #[major] motive else pure motive;
|
||||
motive ← mkLambdaFVars indices motive;
|
||||
let rec := mkApp rec motive;
|
||||
finalize mvarId givenNames recInfo reverted major indices baseSubst rec
|
||||
let motive := target
|
||||
let motive ← if recursorInfo.depElim then mkLambdaFVars #[major] motive else pure motive
|
||||
let motive ← mkLambdaFVars indices motive
|
||||
let recursor := mkApp recursor motive
|
||||
finalize mvarId givenNames recursorInfo reverted major indices baseSubst recursor
|
||||
| _ =>
|
||||
throwTacticEx `induction mvarId "major premise is not of the form (C ...)"
|
||||
|
||||
@[init] private def regTraceClasses : IO Unit := do
|
||||
registerTraceClass `Meta.Tactic.induction
|
||||
initialize registerTraceClass `Meta.Tactic.induction
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
74
stage0/src/Lean/Meta/Tactic/Injection.lean
generated
74
stage0/src/Lean/Meta/Tactic/Injection.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -8,41 +9,40 @@ import Lean.Meta.Tactic.Clear
|
|||
import Lean.Meta.Tactic.Assert
|
||||
import Lean.Meta.Tactic.Intro
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
inductive InjectionResultCore
|
||||
| solved
|
||||
| subgoal (mvarId : MVarId) (numNewEqs : Nat)
|
||||
|
||||
def injectionCore (mvarId : MVarId) (fvarId : FVarId) : MetaM InjectionResultCore := do
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `injection;
|
||||
decl ← getLocalDecl fvarId;
|
||||
type ← whnf decl.type;
|
||||
def injectionCore (mvarId : MVarId) (fvarId : FVarId) : MetaM InjectionResultCore :=
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `injection
|
||||
let decl ← getLocalDecl fvarId
|
||||
let type ← whnf decl.type
|
||||
match type.eq? with
|
||||
| none => throwTacticEx `injection mvarId "equality expected"
|
||||
| some (α, a, b) => do
|
||||
a ← whnf a;
|
||||
b ← whnf b;
|
||||
target ← getMVarType mvarId;
|
||||
env ← getEnv;
|
||||
| some (α, a, b) =>
|
||||
let a ← whnf a
|
||||
let b ← whnf b
|
||||
let target ← getMVarType mvarId
|
||||
let env ← getEnv
|
||||
match a.isConstructorApp? env, b.isConstructorApp? env with
|
||||
| some aCtor, some bCtor => do
|
||||
val ← mkNoConfusion target (mkFVar fvarId);
|
||||
if aCtor.name != bCtor.name then do
|
||||
assignExprMVar mvarId val;
|
||||
| some aCtor, some bCtor =>
|
||||
let val ← mkNoConfusion target (mkFVar fvarId)
|
||||
if aCtor.name != bCtor.name then
|
||||
assignExprMVar mvarId val
|
||||
pure InjectionResultCore.solved
|
||||
else do
|
||||
valType ← inferType val;
|
||||
valType ← whnf valType;
|
||||
let valType ← inferType val
|
||||
let valType ← whnf valType
|
||||
match valType with
|
||||
| Expr.forallE _ newTarget _ _ => do
|
||||
let newTarget := newTarget.headBeta;
|
||||
tag ← getMVarTag mvarId;
|
||||
newMVar ← mkFreshExprSyntheticOpaqueMVar newTarget tag;
|
||||
assignExprMVar mvarId (mkApp val newMVar);
|
||||
mvarId ← tryClear newMVar.mvarId! fvarId;
|
||||
| Expr.forallE _ newTarget _ _ =>
|
||||
let newTarget := newTarget.headBeta
|
||||
let tag ← getMVarTag mvarId
|
||||
let newMVar ← mkFreshExprSyntheticOpaqueMVar newTarget tag
|
||||
assignExprMVar mvarId (mkApp val newMVar)
|
||||
let mvarId ← tryClear newMVar.mvarId! fvarId
|
||||
pure $ InjectionResultCore.subgoal mvarId aCtor.nfields
|
||||
| _ => throwTacticEx `injection mvarId "ill-formed noConfusion auxiliary construction"
|
||||
| _, _ => throwTacticEx `injection mvarId "equality of constructor applications expected"
|
||||
|
|
@ -52,33 +52,33 @@ inductive InjectionResult
|
|||
| subgoal (mvarId : MVarId) (newEqs : Array FVarId) (remainingNames : List Name)
|
||||
|
||||
private def heqToEq (mvarId : MVarId) (fvarId : FVarId) : MetaM (FVarId × MVarId) :=
|
||||
withMVarContext mvarId $ do
|
||||
decl ← getLocalDecl fvarId;
|
||||
type ← whnf decl.type;
|
||||
withMVarContext mvarId do
|
||||
let decl ← getLocalDecl fvarId
|
||||
let type ← whnf decl.type
|
||||
match type.heq? with
|
||||
| none => pure (fvarId, mvarId)
|
||||
| some (α, a, β, b) => do
|
||||
pr ← mkEqOfHEq (mkFVar fvarId);
|
||||
eq ← mkEq a b;
|
||||
mvarId ← assert mvarId decl.userName eq pr;
|
||||
mvarId ← clear mvarId fvarId;
|
||||
(fvarId, mvarId) ← intro1P mvarId;
|
||||
let pr ← mkEqOfHEq (mkFVar fvarId)
|
||||
let eq ← mkEq a b
|
||||
let mvarId ← assert mvarId decl.userName eq pr
|
||||
let mvarId ← clear mvarId fvarId
|
||||
let (fvarId, mvarId) ← intro1P mvarId
|
||||
pure (fvarId, mvarId)
|
||||
|
||||
def injectionIntro : Nat → MVarId → Array FVarId → List Name → MetaM InjectionResult
|
||||
| 0, mvarId, fvarIds, remainingNames =>
|
||||
pure $ InjectionResult.subgoal mvarId fvarIds remainingNames
|
||||
| n+1, mvarId, fvarIds, name::remainingNames => do
|
||||
(fvarId, mvarId) ← intro mvarId name;
|
||||
(fvarId, mvarId) ← heqToEq mvarId fvarId;
|
||||
let (fvarId, mvarId) ← intro mvarId name
|
||||
let (fvarId, mvarId) ← heqToEq mvarId fvarId
|
||||
injectionIntro n mvarId (fvarIds.push fvarId) remainingNames
|
||||
| n+1, mvarId, fvarIds, [] => do
|
||||
(fvarId, mvarId) ← intro1 mvarId;
|
||||
(fvarId, mvarId) ← heqToEq mvarId fvarId;
|
||||
let (fvarId, mvarId) ← intro1 mvarId
|
||||
let (fvarId, mvarId) ← heqToEq mvarId fvarId
|
||||
injectionIntro n mvarId (fvarIds.push fvarId) []
|
||||
|
||||
def injection (mvarId : MVarId) (fvarId : FVarId) (newNames : List Name := []) (useUnusedNames : Bool := true) : MetaM InjectionResult := do
|
||||
r ← injectionCore mvarId fvarId;
|
||||
let r ← injectionCore mvarId fvarId
|
||||
match r with
|
||||
| InjectionResultCore.solved => pure InjectionResult.solved
|
||||
| InjectionResultCore.subgoal mvarId numEqs => injectionIntro numEqs mvarId #[] newNames
|
||||
|
|
|
|||
129
stage0/src/Lean/Meta/Tactic/Intro.lean
generated
129
stage0/src/Lean/Meta/Tactic/Intro.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2019 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -5,90 +6,86 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
import Lean.Meta.Tactic.Util
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
@[specialize]
|
||||
private partial def introNImpAux {σ} (mvarId : MVarId) (mkName : LocalContext → Name → σ → MetaM (Name × σ))
|
||||
: Nat → LocalContext → Array Expr → Nat → σ → Expr → MetaM (Array Expr × MVarId)
|
||||
| 0, lctx, fvars, j, _, type =>
|
||||
let type := type.instantiateRevRange j fvars.size fvars;
|
||||
withReader (fun ctx => { ctx with lctx := lctx }) $
|
||||
withNewLocalInstances fvars j $ do
|
||||
tag ← getMVarTag mvarId;
|
||||
let type := type.headBeta;
|
||||
newMVar ← mkFreshExprSyntheticOpaqueMVar type tag;
|
||||
lctx ← getLCtx;
|
||||
newVal ← mkLambdaFVars fvars newMVar;
|
||||
assignExprMVar mvarId newVal;
|
||||
pure $ (fvars, newMVar.mvarId!)
|
||||
| (i+1), lctx, fvars, j, s, Expr.letE n type val body _ => do
|
||||
let type := type.instantiateRevRange j fvars.size fvars;
|
||||
let type := type.headBeta;
|
||||
let val := val.instantiateRevRange j fvars.size fvars;
|
||||
fvarId ← mkFreshId;
|
||||
(n, s) ← mkName lctx n s;
|
||||
let lctx := lctx.mkLetDecl fvarId n type val;
|
||||
let fvar := mkFVar fvarId;
|
||||
let fvars := fvars.push fvar;
|
||||
introNImpAux i lctx fvars j s body
|
||||
| (i+1), lctx, fvars, j, s, Expr.forallE n type body c => do
|
||||
let type := type.instantiateRevRange j fvars.size fvars;
|
||||
let type := type.headBeta;
|
||||
fvarId ← mkFreshId;
|
||||
(n, s) ← mkName lctx n s;
|
||||
let lctx := lctx.mkLocalDecl fvarId n type c.binderInfo;
|
||||
let fvar := mkFVar fvarId;
|
||||
let fvars := fvars.push fvar;
|
||||
introNImpAux i lctx fvars j s body
|
||||
| (i+1), lctx, fvars, j, s, type =>
|
||||
let type := type.instantiateRevRange j fvars.size fvars;
|
||||
withReader (fun ctx => { ctx with lctx := lctx }) $
|
||||
withNewLocalInstances fvars j $ do
|
||||
newType ← whnf type;
|
||||
if newType.isForall then
|
||||
introNImpAux (i+1) lctx fvars fvars.size s newType
|
||||
else
|
||||
throwTacticEx `introN mvarId "insufficient number of binders"
|
||||
|
||||
@[specialize] private def introNImp {σ} (mvarId : MVarId) (n : Nat) (mkName : LocalContext → Name → σ → MetaM (Name × σ)) (s : σ) : MetaM (Array FVarId × MVarId) :=
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `introN;
|
||||
mvarType ← getMVarType mvarId;
|
||||
lctx ← getLCtx;
|
||||
(fvars, mvarId) ← introNImpAux mvarId mkName n lctx #[] 0 s mvarType;
|
||||
@[inline] private partial def introNImp {σ} (mvarId : MVarId) (n : Nat) (mkName : LocalContext → Name → σ → MetaM (Name × σ)) (s : σ)
|
||||
: MetaM (Array FVarId × MVarId) :=
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `introN
|
||||
let mvarType ← getMVarType mvarId
|
||||
let lctx ← getLCtx
|
||||
let rec @[specialize] loop : Nat → LocalContext → Array Expr → Nat → σ → Expr → MetaM (Array Expr × MVarId)
|
||||
| 0, lctx, fvars, j, _, type =>
|
||||
let type := type.instantiateRevRange j fvars.size fvars
|
||||
withReader (fun ctx => { ctx with lctx := lctx }) $
|
||||
withNewLocalInstances fvars j $ do
|
||||
let tag ← getMVarTag mvarId
|
||||
let type := type.headBeta
|
||||
let newMVar ← mkFreshExprSyntheticOpaqueMVar type tag
|
||||
let lctx ← getLCtx
|
||||
let newVal ← mkLambdaFVars fvars newMVar
|
||||
assignExprMVar mvarId newVal
|
||||
pure $ (fvars, newMVar.mvarId!)
|
||||
| (i+1), lctx, fvars, j, s, Expr.letE n type val body _ => do
|
||||
let type := type.instantiateRevRange j fvars.size fvars
|
||||
let type := type.headBeta
|
||||
let val := val.instantiateRevRange j fvars.size fvars
|
||||
let fvarId ← mkFreshId
|
||||
let (n, s) ← mkName lctx n s
|
||||
let lctx := lctx.mkLetDecl fvarId n type val
|
||||
let fvar := mkFVar fvarId
|
||||
let fvars := fvars.push fvar
|
||||
loop i lctx fvars j s body
|
||||
| (i+1), lctx, fvars, j, s, Expr.forallE n type body c => do
|
||||
let type := type.instantiateRevRange j fvars.size fvars
|
||||
let type := type.headBeta
|
||||
let fvarId ← mkFreshId
|
||||
let (n, s) ← mkName lctx n s
|
||||
let lctx := lctx.mkLocalDecl fvarId n type c.binderInfo
|
||||
let fvar := mkFVar fvarId
|
||||
let fvars := fvars.push fvar
|
||||
loop i lctx fvars j s body
|
||||
| (i+1), lctx, fvars, j, s, type =>
|
||||
let type := type.instantiateRevRange j fvars.size fvars
|
||||
withReader (fun ctx => { ctx with lctx := lctx }) $
|
||||
withNewLocalInstances fvars j do
|
||||
let newType ← whnf type
|
||||
if newType.isForall then
|
||||
loop (i+1) lctx fvars fvars.size s newType
|
||||
else
|
||||
throwTacticEx `introN mvarId "insufficient number of binders"
|
||||
let (fvars, mvarId) ← loop n lctx #[] 0 s mvarType
|
||||
pure (fvars.map Expr.fvarId!, mvarId)
|
||||
|
||||
def hygienicIntroDef := true
|
||||
|
||||
def hygienicIntroDefault := true
|
||||
def getHygienicIntro : MetaM Bool := do
|
||||
o ← getOptions;
|
||||
pure $ o.get `hygienicIntro hygienicIntroDef
|
||||
let o ← getOptions
|
||||
pure $ o.get `hygienicIntro hygienicIntroDefault
|
||||
|
||||
@[init] def registerHygienicIntro : IO Unit :=
|
||||
registerOption `hygienicIntro { defValue := hygienicIntroDef, group := "tactic", descr := "make sure 'intro'-like tactics are hygienic" }
|
||||
initialize registerOption `hygienicIntro { defValue := hygienicIntroDefault, group := "tactic", descr := "make sure 'intro'-like tactics are hygienic" }
|
||||
|
||||
private def mkAuxNameImp (preserveBinderNames : Bool) (hygienic : Bool) (lctx : LocalContext) (binderName : Name) : List Name → MetaM (Name × List Name)
|
||||
| [] =>
|
||||
| [] => do
|
||||
if preserveBinderNames then
|
||||
pure (binderName, [])
|
||||
else if hygienic then do
|
||||
binderName ← mkFreshUserName binderName;
|
||||
let binderName ← mkFreshUserName binderName;
|
||||
pure (binderName, [])
|
||||
else
|
||||
pure (lctx.getUnusedName binderName, [])
|
||||
| n :: rest =>
|
||||
if n != "_" then pure (n, rest)
|
||||
| n :: rest => do
|
||||
if n != mkNameSimple "_" then
|
||||
pure (n, rest)
|
||||
else if preserveBinderNames then
|
||||
pure (binderName, rest)
|
||||
else if hygienic then do
|
||||
binderName ← mkFreshUserName binderName;
|
||||
else if hygienic then
|
||||
let binderName ← mkFreshUserName binderName
|
||||
pure (binderName, rest)
|
||||
else
|
||||
pure (lctx.getUnusedName binderName, rest)
|
||||
|
||||
def introNCore (mvarId : MVarId) (n : Nat) (givenNames : List Name) (preserveBinderNames : Bool) : MetaM (Array FVarId × MVarId) := do
|
||||
hygienic ← getHygienicIntro;
|
||||
let hygienic ← getHygienicIntro
|
||||
if n == 0 then pure (#[], mvarId)
|
||||
else introNImp mvarId n (mkAuxNameImp preserveBinderNames hygienic) givenNames
|
||||
|
||||
|
|
@ -99,11 +96,11 @@ abbrev introNP (mvarId : MVarId) (n : Nat) : MetaM (Array FVarId × MVarId) :=
|
|||
introNCore mvarId n [] true
|
||||
|
||||
def intro (mvarId : MVarId) (name : Name) : MetaM (FVarId × MVarId) := do
|
||||
(fvarIds, mvarId) ← introN mvarId 1 [name];
|
||||
let (fvarIds, mvarId) ← introN mvarId 1 [name]
|
||||
pure (fvarIds.get! 0, mvarId)
|
||||
|
||||
def intro1Core (mvarId : MVarId) (preserveBinderNames : Bool) : MetaM (FVarId × MVarId) := do
|
||||
(fvarIds, mvarId) ← introNCore mvarId 1 [] preserveBinderNames;
|
||||
let (fvarIds, mvarId) ← introNCore mvarId 1 [] preserveBinderNames
|
||||
pure (fvarIds.get! 0, mvarId)
|
||||
|
||||
abbrev intro1 (mvarId : MVarId) : MetaM (FVarId × MVarId) := do
|
||||
|
|
|
|||
81
stage0/src/Lean/Meta/Tactic/Replace.lean
generated
81
stage0/src/Lean/Meta/Tactic/Replace.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -10,23 +11,22 @@ import Lean.Meta.Tactic.Intro
|
|||
import Lean.Meta.Tactic.Clear
|
||||
import Lean.Meta.Tactic.Assert
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
/--
|
||||
Convert the given goal `Ctx |- target` into `Ctx |- targetNew` using an equality proof `eqProof : target = targetNew`.
|
||||
It assumes `eqProof` has type `target = targetNew` -/
|
||||
def replaceTargetEq (mvarId : MVarId) (targetNew : Expr) (eqProof : Expr) : MetaM MVarId :=
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `replaceTarget;
|
||||
tag ← getMVarTag mvarId;
|
||||
mvarNew ← mkFreshExprSyntheticOpaqueMVar targetNew tag;
|
||||
target ← getMVarType mvarId;
|
||||
u ← getLevel target;
|
||||
eq ← mkEq target targetNew;
|
||||
newProof ← mkExpectedTypeHint eqProof eq;
|
||||
let val := mkAppN (Lean.mkConst `Eq.mpr [u]) #[target, targetNew, eqProof, mvarNew];
|
||||
assignExprMVar mvarId val;
|
||||
checkNotAssigned mvarId `replaceTarget
|
||||
let tag ← getMVarTag mvarId
|
||||
let mvarNew ← mkFreshExprSyntheticOpaqueMVar targetNew tag
|
||||
let target ← getMVarType mvarId
|
||||
let u ← getLevel target
|
||||
let eq ← mkEq target targetNew
|
||||
let newProof ← mkExpectedTypeHint eqProof eq
|
||||
let val := mkAppN (Lean.mkConst `Eq.mpr [u]) #[target, targetNew, eqProof, mvarNew]
|
||||
assignExprMVar mvarId val
|
||||
pure mvarNew.mvarId!
|
||||
|
||||
/--
|
||||
|
|
@ -38,14 +38,14 @@ withMVarContext mvarId do
|
|||
to create a checkpoint. -/
|
||||
def replaceTargetDefEq (mvarId : MVarId) (targetNew : Expr) : MetaM MVarId :=
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `change;
|
||||
target ← getMVarType mvarId;
|
||||
checkNotAssigned mvarId `change
|
||||
let target ← getMVarType mvarId
|
||||
if target == targetNew then pure mvarId
|
||||
else do
|
||||
tag ← getMVarTag mvarId;
|
||||
mvarNew ← mkFreshExprSyntheticOpaqueMVar targetNew tag;
|
||||
newVal ← mkExpectedTypeHint mvarNew target;
|
||||
assignExprMVar mvarId mvarNew;
|
||||
else
|
||||
let tag ← getMVarTag mvarId
|
||||
let mvarNew ← mkFreshExprSyntheticOpaqueMVar targetNew tag
|
||||
let newVal ← mkExpectedTypeHint mvarNew target
|
||||
assignExprMVar mvarId mvarNew
|
||||
pure mvarNew.mvarId!
|
||||
|
||||
/--
|
||||
|
|
@ -56,40 +56,37 @@ withMVarContext mvarId do
|
|||
Remark: the new declaration is added immediately after `fvarId`.
|
||||
`typeNew` must be well-formed at `fvarId`, but `eqProof` may contain variables declared after `fvarId`. -/
|
||||
def replaceLocalDecl (mvarId : MVarId) (fvarId : FVarId) (typeNew : Expr) (eqProof : Expr) : MetaM AssertAfterResult := do
|
||||
withMVarContext mvarId $ do
|
||||
localDecl ← getLocalDecl fvarId;
|
||||
typeNewPr ← mkEqMP eqProof (mkFVar fvarId);
|
||||
result ← assertAfter mvarId localDecl.fvarId localDecl.userName typeNew typeNewPr;
|
||||
(do mvarIdNew ← clear result.mvarId fvarId; pure { result with mvarId := mvarIdNew }) <|> pure result
|
||||
withMVarContext mvarId do
|
||||
let localDecl ← getLocalDecl fvarId
|
||||
let typeNewPr ← mkEqMP eqProof (mkFVar fvarId)
|
||||
let result ← assertAfter mvarId localDecl.fvarId localDecl.userName typeNew typeNewPr
|
||||
(do let mvarIdNew ← clear result.mvarId fvarId
|
||||
pure { result with mvarId := mvarIdNew })
|
||||
<|> pure result
|
||||
|
||||
def change (mvarId : MVarId) (targetNew : Expr) : MetaM MVarId :=
|
||||
withMVarContext mvarId do
|
||||
target ← getMVarType mvarId;
|
||||
unlessM (isDefEq target targetNew) $
|
||||
throwTacticEx `change mvarId
|
||||
("given type" ++ indentExpr targetNew ++ Format.line ++ "is not definitionally equal to" ++ indentExpr target);
|
||||
let target ← getMVarType mvarId
|
||||
unless (← isDefEq target targetNew) do
|
||||
throwTacticEx `change mvarId msg!"given type{indentExpr targetNew}\nis not definitionally equal to{indentExpr target}"
|
||||
replaceTargetDefEq mvarId targetNew
|
||||
|
||||
def changeLocalDecl (mvarId : MVarId) (fvarId : FVarId) (typeNew : Expr) : MetaM MVarId := do
|
||||
checkNotAssigned mvarId `changeLocalDecl;
|
||||
(xs, mvarId) ← revert mvarId #[fvarId] true;
|
||||
checkNotAssigned mvarId `changeLocalDecl
|
||||
let (xs, mvarId) ← revert mvarId #[fvarId] true
|
||||
withMVarContext mvarId do
|
||||
let numReverted := xs.size;
|
||||
target ← getMVarType mvarId;
|
||||
let checkDefEq (typeOld : Expr) : MetaM Unit := do {
|
||||
unlessM (isDefEq typeNew typeOld) $
|
||||
throwTacticEx `changeHypothesis mvarId
|
||||
("given type" ++ indentExpr typeNew ++ Format.line ++ "is not definitionally equal to" ++ indentExpr typeOld)
|
||||
};
|
||||
let finalize (targetNew : Expr) : MetaM MVarId := do {
|
||||
mvarId ← replaceTargetDefEq mvarId targetNew;
|
||||
(_, mvarId) ← introNP mvarId (numReverted-1);
|
||||
let numReverted := xs.size
|
||||
let target ← getMVarType mvarId
|
||||
let checkDefEq (typeOld : Expr) : MetaM Unit := do
|
||||
unless (← isDefEq typeNew typeOld) do
|
||||
throwTacticEx `changeHypothesis mvarId msg!"given type{indentExpr typeNew}\nis not definitionally equal to{indentExpr typeOld}"
|
||||
let finalize (targetNew : Expr) : MetaM MVarId := do
|
||||
let mvarId ← replaceTargetDefEq mvarId targetNew
|
||||
let (_, mvarId) ← introNP mvarId (numReverted-1)
|
||||
pure mvarId
|
||||
};
|
||||
match target with
|
||||
| Expr.forallE n d b c => do checkDefEq d; finalize (mkForall n c.binderInfo typeNew b)
|
||||
| Expr.letE n t v b _ => do checkDefEq t; finalize (mkLet n typeNew v b)
|
||||
| _ => throwTacticEx `changeHypothesis mvarId "unexpected auxiliary target"
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
26
stage0/src/Lean/Meta/Tactic/Revert.lean
generated
26
stage0/src/Lean/Meta/Tactic/Revert.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -5,20 +6,19 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
import Lean.Meta.Tactic.Util
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
def revert (mvarId : MVarId) (fvars : Array FVarId) (preserveOrder : Bool := false) : MetaM (Array FVarId × MVarId) :=
|
||||
if fvars.isEmpty then pure (fvars, mvarId)
|
||||
else withMVarContext mvarId $ do
|
||||
tag ← getMVarTag mvarId;
|
||||
checkNotAssigned mvarId `revert;
|
||||
def revert (mvarId : MVarId) (fvars : Array FVarId) (preserveOrder : Bool := false) : MetaM (Array FVarId × MVarId) := do
|
||||
if fvars.isEmpty then
|
||||
pure (fvars, mvarId)
|
||||
else withMVarContext mvarId do
|
||||
let tag ← getMVarTag mvarId
|
||||
checkNotAssigned mvarId `revert
|
||||
-- Set metavariable kind to natural to make sure `elimMVarDeps` will assign it.
|
||||
setMVarKind mvarId MetavarKind.natural;
|
||||
e ← finally (elimMVarDeps (fvars.map mkFVar) (mkMVar mvarId) preserveOrder) (setMVarKind mvarId MetavarKind.syntheticOpaque);
|
||||
e.withApp $ fun mvar args => do
|
||||
setMVarTag mvar.mvarId! tag;
|
||||
setMVarKind mvarId MetavarKind.natural
|
||||
let e ← try elimMVarDeps (fvars.map mkFVar) (mkMVar mvarId) preserveOrder finally setMVarKind mvarId MetavarKind.syntheticOpaque
|
||||
e.withApp fun mvar args => do
|
||||
setMVarTag mvar.mvarId! tag
|
||||
pure (args.map Expr.fvarId!, mvar.mvarId!)
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
79
stage0/src/Lean/Meta/Tactic/Rewrite.lean
generated
79
stage0/src/Lean/Meta/Tactic/Rewrite.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -8,8 +9,7 @@ import Lean.Meta.KAbstract
|
|||
import Lean.Meta.Check
|
||||
import Lean.Meta.Tactic.Apply
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
structure RewriteResult :=
|
||||
(eNew : Expr)
|
||||
|
|
@ -17,50 +17,47 @@ structure RewriteResult :=
|
|||
(mvarIds : List MVarId) -- new goals
|
||||
|
||||
def rewrite (mvarId : MVarId) (e : Expr) (heq : Expr) (symm : Bool := false) (occs : Occurrences := Occurrences.all) : MetaM RewriteResult :=
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `rewrite;
|
||||
heqType ← inferType heq;
|
||||
(newMVars, binderInfos, heqType) ← forallMetaTelescopeReducing heqType;
|
||||
let heq := mkAppN heq newMVars;
|
||||
let continue (heq heqType : Expr) : MetaM RewriteResult :=
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `rewrite
|
||||
let heqType ← inferType heq
|
||||
let (newMVars, binderInfos, heqType) ← forallMetaTelescopeReducing heqType
|
||||
let heq := mkAppN heq newMVars
|
||||
let cont (heq heqType : Expr) : MetaM RewriteResult :=
|
||||
match heqType.eq? with
|
||||
| none => throwTacticEx `rewrite mvarId ("equality of iff proof expected")
|
||||
| none => throwTacticEx `rewrite mvarId "equality of iff proof expected"
|
||||
| some (α, lhs, rhs) =>
|
||||
let continue (heq heqType lhs rhs : Expr) : MetaM RewriteResult := do {
|
||||
when lhs.getAppFn.isMVar $
|
||||
throwTacticEx `rewrite mvarId ("pattern is a metavariable " ++ indentExpr lhs ++ Format.line ++ "from equation" ++ indentExpr heqType);
|
||||
e ← instantiateMVars e;
|
||||
eAbst ← kabstract e lhs occs;
|
||||
unless eAbst.hasLooseBVars $
|
||||
throwTacticEx `rewrite mvarId ("did not find instance of the pattern in the target expression");
|
||||
let cont (heq heqType lhs rhs : Expr) : MetaM RewriteResult := do
|
||||
if lhs.getAppFn.isMVar then
|
||||
throwTacticEx `rewrite mvarId msg!"pattern is a metavariable{indentExpr lhs}\nfrom equation{indentExpr heqType}"
|
||||
let e ← instantiateMVars e
|
||||
let eAbst ← kabstract e lhs occs
|
||||
unless eAbst.hasLooseBVars do
|
||||
throwTacticEx `rewrite mvarId "did not find instance of the pattern in the target expression"
|
||||
-- construct rewrite proof
|
||||
let eNew := eAbst.instantiate1 rhs;
|
||||
eNew ← instantiateMVars eNew;
|
||||
eEqE ← mkEq e e;
|
||||
let eEqEAbst := mkApp eEqE.appFn! eAbst;
|
||||
let motive := Lean.mkLambda `_a BinderInfo.default α eEqEAbst;
|
||||
unlessM (isTypeCorrect motive) $
|
||||
throwTacticEx `rewrite mvarId ("motive is not type correct");
|
||||
eqRefl ← mkEqRefl e;
|
||||
eqPrf ← mkEqNDRec motive eqRefl heq;
|
||||
postprocessAppMVars `rewrite mvarId newMVars binderInfos;
|
||||
newMVars ← newMVars.filterM $ fun mvar => not <$> isExprMVarAssigned mvar.mvarId!;
|
||||
let eNew := eAbst.instantiate1 rhs
|
||||
let eNew ← instantiateMVars eNew
|
||||
let eEqE ← mkEq e e
|
||||
let eEqEAbst := mkApp eEqE.appFn! eAbst
|
||||
let motive := Lean.mkLambda `_a BinderInfo.default α eEqEAbst
|
||||
unless (← isTypeCorrect motive) do
|
||||
throwTacticEx `rewrite mvarId "motive is not type correct"
|
||||
let eqRefl ← mkEqRefl e
|
||||
let eqPrf ← mkEqNDRec motive eqRefl heq
|
||||
postprocessAppMVars `rewrite mvarId newMVars binderInfos
|
||||
let newMVars ← newMVars.filterM fun mvar => not <$> isExprMVarAssigned mvar.mvarId!
|
||||
pure { eNew := eNew, eqProof := eqPrf, mvarIds := newMVars.toList.map Expr.mvarId! }
|
||||
};
|
||||
match symm with
|
||||
| false => continue heq heqType lhs rhs
|
||||
| true => do {
|
||||
heq ← mkEqSymm heq;
|
||||
heqType ← mkEq rhs lhs;
|
||||
continue heq heqType rhs lhs
|
||||
};
|
||||
| false => cont heq heqType lhs rhs
|
||||
| true => do
|
||||
let heq ← mkEqSymm heq
|
||||
let heqType ← mkEq rhs lhs
|
||||
cont heq heqType rhs lhs
|
||||
match heqType.iff? with
|
||||
| some (lhs, rhs) => do
|
||||
heqType ← mkEq lhs rhs;
|
||||
let heq := mkApp3 (mkConst `propext) lhs rhs heq;
|
||||
continue heq heqType
|
||||
| some (lhs, rhs) =>
|
||||
let heqType ← mkEq lhs rhs
|
||||
let heq := mkApp3 (mkConst `propext) lhs rhs heq
|
||||
cont heq heqType
|
||||
| none =>
|
||||
continue heq heqType
|
||||
cont heq heqType
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
202
stage0/src/Lean/Meta/Tactic/Subst.lean
generated
202
stage0/src/Lean/Meta/Tactic/Subst.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -11,138 +12,127 @@ import Lean.Meta.Tactic.Intro
|
|||
import Lean.Meta.Tactic.Clear
|
||||
import Lean.Meta.Tactic.FVarSubst
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
def substCore (mvarId : MVarId) (hFVarId : FVarId) (symm := false) (fvarSubst : FVarSubst := {}) (clearH := true) : MetaM (FVarSubst × MVarId) :=
|
||||
withMVarContext mvarId $ do
|
||||
tag ← getMVarTag mvarId;
|
||||
checkNotAssigned mvarId `subst;
|
||||
let hFVarIdOriginal := hFVarId;
|
||||
hLocalDecl ← getLocalDecl hFVarId;
|
||||
eq? ← matchEq? hLocalDecl.type;
|
||||
match eq? with
|
||||
withMVarContext mvarId do
|
||||
let tag ← getMVarTag mvarId
|
||||
checkNotAssigned mvarId `subst
|
||||
let hFVarIdOriginal := hFVarId
|
||||
let hLocalDecl ← getLocalDecl hFVarId
|
||||
match (← matchEq? hLocalDecl.type) with
|
||||
| none => throwTacticEx `subst mvarId "argument must be an equality proof"
|
||||
| some (α, lhs, rhs) => do
|
||||
let a := if symm then rhs else lhs;
|
||||
let b := if symm then lhs else rhs;
|
||||
a ← whnf a;
|
||||
let a := if symm then rhs else lhs
|
||||
let b := if symm then lhs else rhs
|
||||
let a ← whnf a
|
||||
match a with
|
||||
| Expr.fvar aFVarId _ => do
|
||||
let aFVarIdOriginal := aFVarId;
|
||||
trace! `Meta.Tactic.subst ("substituting " ++ a ++ " (id: " ++ aFVarId ++ ") with " ++ b);
|
||||
mctx ← getMCtx;
|
||||
when (mctx.exprDependsOn b aFVarId) $
|
||||
throwTacticEx `subst mvarId ("'" ++ a ++ "' occurs at" ++ indentExpr b);
|
||||
aLocalDecl ← getLocalDecl aFVarId;
|
||||
(vars, mvarId) ← revert mvarId #[aFVarId, hFVarId] true;
|
||||
(twoVars, mvarId) ← introNP mvarId 2;
|
||||
trace! `Meta.Tactic.subst ("reverted variables " ++ toString vars);
|
||||
let aFVarId := twoVars.get! 0;
|
||||
let a := mkFVar aFVarId;
|
||||
let hFVarId := twoVars.get! 1;
|
||||
let h := mkFVar hFVarId;
|
||||
withMVarContext mvarId $ do
|
||||
mvarDecl ← getMVarDecl mvarId;
|
||||
let type := mvarDecl.type;
|
||||
hLocalDecl ← getLocalDecl hFVarId;
|
||||
eq? ← matchEq? hLocalDecl.type;
|
||||
match eq? with
|
||||
let aFVarIdOriginal := aFVarId
|
||||
trace[Meta.Tactic.subst]! "substituting {a} (id: {aFVarId} with {b}"
|
||||
let mctx ← getMCtx
|
||||
if mctx.exprDependsOn b aFVarId then
|
||||
throwTacticEx `subst mvarId msg!"'{a}' occurs at{indentExpr b}"
|
||||
let aLocalDecl ← getLocalDecl aFVarId
|
||||
let (vars, mvarId) ← revert mvarId #[aFVarId, hFVarId] true
|
||||
let (twoVars, mvarId) ← introNP mvarId 2
|
||||
trace[Meta.Tactic.subst]! "reverted variables {vars}"
|
||||
let aFVarId := twoVars[0]
|
||||
let a := mkFVar aFVarId
|
||||
let hFVarId := twoVars[1]
|
||||
let h := mkFVar hFVarId
|
||||
withMVarContext mvarId do
|
||||
let mvarDecl ← getMVarDecl mvarId
|
||||
let type := mvarDecl.type
|
||||
let hLocalDecl ← getLocalDecl hFVarId
|
||||
match (← matchEq? hLocalDecl.type) with
|
||||
| none => unreachable!
|
||||
| some (α, lhs, rhs) => do
|
||||
let b := if symm then lhs else rhs;
|
||||
mctx ← getMCtx;
|
||||
let depElim := mctx.exprDependsOn mvarDecl.type hFVarId;
|
||||
let continue (motive : Expr) (newType : Expr) : MetaM (FVarSubst × MVarId) := do {
|
||||
major ← if symm then pure h else mkEqSymm h;
|
||||
newMVar ← mkFreshExprSyntheticOpaqueMVar newType tag;
|
||||
let minor := newMVar;
|
||||
newVal ← if depElim then mkEqRec motive minor major else mkEqNDRec motive minor major;
|
||||
assignExprMVar mvarId newVal;
|
||||
let mvarId := newMVar.mvarId!;
|
||||
mvarId ←
|
||||
if clearH then do
|
||||
mvarId ← clear mvarId hFVarId;
|
||||
let b := if symm then lhs else rhs
|
||||
let mctx ← getMCtx
|
||||
let depElim := mctx.exprDependsOn mvarDecl.type hFVarId
|
||||
let cont (motive : Expr) (newType : Expr) : MetaM (FVarSubst × MVarId) := do
|
||||
let major ← if symm then pure h else mkEqSymm h
|
||||
let newMVar ← mkFreshExprSyntheticOpaqueMVar newType tag
|
||||
let minor := newMVar
|
||||
let newVal ← if depElim then mkEqRec motive minor major else mkEqNDRec motive minor major
|
||||
assignExprMVar mvarId newVal
|
||||
let mvarId := newMVar.mvarId!
|
||||
let mvarId ←
|
||||
if clearH then
|
||||
let mvarId ← clear mvarId hFVarId
|
||||
clear mvarId aFVarId
|
||||
else
|
||||
pure mvarId;
|
||||
(newFVars, mvarId) ← introNP mvarId (vars.size - 2);
|
||||
fvarSubst ← newFVars.size.foldM
|
||||
(fun i (fvarSubst : FVarSubst) =>
|
||||
let var := vars.get! (i+2);
|
||||
let newFVar := newFVars.get! i;
|
||||
pure $ fvarSubst.insert var (mkFVar newFVar))
|
||||
fvarSubst;
|
||||
let fvarSubst := fvarSubst.insert aFVarIdOriginal (if clearH then b else mkFVar aFVarId);
|
||||
let fvarSubst := fvarSubst.insert hFVarIdOriginal (mkFVar hFVarId);
|
||||
pure mvarId
|
||||
let (newFVars, mvarId) ← introNP mvarId (vars.size - 2)
|
||||
let fvarSubst ← newFVars.size.foldM (init := fvarSubst) fun i (fvarSubst : FVarSubst) =>
|
||||
let var := vars[i+2]
|
||||
let newFVar := newFVars[i]
|
||||
pure $ fvarSubst.insert var (mkFVar newFVar)
|
||||
let fvarSubst := fvarSubst.insert aFVarIdOriginal (if clearH then b else mkFVar aFVarId)
|
||||
let fvarSubst := fvarSubst.insert hFVarIdOriginal (mkFVar hFVarId)
|
||||
pure (fvarSubst, mvarId)
|
||||
};
|
||||
if depElim then do
|
||||
let newType := type.replaceFVar a b;
|
||||
reflB ← mkEqRefl b;
|
||||
let newType := newType.replaceFVar h reflB;
|
||||
if symm then do
|
||||
motive ← mkLambdaFVars #[a, h] type;
|
||||
continue motive newType
|
||||
else do
|
||||
let newType := type.replaceFVar a b
|
||||
let reflB ← mkEqRefl b
|
||||
let newType := newType.replaceFVar h reflB
|
||||
if symm then
|
||||
let motive ← mkLambdaFVars #[a, h] type
|
||||
cont motive newType
|
||||
else
|
||||
/- `type` depends on (h : a = b). So, we use the following trick to avoid a type incorrect motive.
|
||||
1- Create a new local (hAux : b = a)
|
||||
2- Create newType := type [hAux.symm / h]
|
||||
`newType` is type correct because `h` and `hAux.symm` are definitionally equal by proof irrelevance.
|
||||
3- Create motive by abstracting `a` and `hAux` in `newType`. -/
|
||||
hAuxType ← mkEq b a;
|
||||
motive ← withLocalDeclD `_h hAuxType $ fun hAux => do {
|
||||
hAuxSymm ← mkEqSymm hAux;
|
||||
let hAuxType ← mkEq b a
|
||||
let motive ← withLocalDeclD `_h hAuxType fun hAux => do
|
||||
let hAuxSymm ← mkEqSymm hAux
|
||||
/- replace h in type with hAuxSymm -/
|
||||
let newType := type.replaceFVar h hAuxSymm;
|
||||
let newType := type.replaceFVar h hAuxSymm
|
||||
mkLambdaFVars #[a, hAux] newType
|
||||
};
|
||||
continue motive newType
|
||||
else do
|
||||
motive ← mkLambdaFVars #[a] type;
|
||||
let newType := type.replaceFVar a b;
|
||||
continue motive newType
|
||||
cont motive newType
|
||||
else
|
||||
let motive ← mkLambdaFVars #[a] type
|
||||
let newType := type.replaceFVar a b
|
||||
cont motive newType
|
||||
| _ =>
|
||||
throwTacticEx `subst mvarId $
|
||||
"invalid equality proof, it is not of the form "
|
||||
++ (if symm then "(t = x)" else "(x = t)")
|
||||
++ indentExpr hLocalDecl.type
|
||||
++ Format.line ++ "after WHNF, variable expected, but obtained" ++ indentExpr a
|
||||
let eqMsg := if symm then "(t = x)" else "(x = t)"
|
||||
throwTacticEx `subst mvarId
|
||||
msg!"invalid equality proof, it is not of the form {eqMsg}{indentExpr hLocalDecl.type}\nafter WHNF, variable expected, but obtained{indentExpr a}"
|
||||
|
||||
def subst (mvarId : MVarId) (hFVarId : FVarId) : MetaM MVarId :=
|
||||
withMVarContext mvarId $ do
|
||||
hLocalDecl ← getLocalDecl hFVarId;
|
||||
eq? ← matchEq? hLocalDecl.type;
|
||||
match eq? with
|
||||
| some (α, lhs, rhs) => do
|
||||
rhs ← whnf rhs;
|
||||
withMVarContext mvarId do
|
||||
let hLocalDecl ← getLocalDecl hFVarId
|
||||
match (← matchEq? hLocalDecl.type) with
|
||||
| some (α, lhs, rhs) =>
|
||||
let rhs ← whnf rhs
|
||||
if rhs.isFVar then
|
||||
Prod.snd <$> substCore mvarId hFVarId true
|
||||
(·.2) <$> substCore mvarId hFVarId true
|
||||
else do
|
||||
lhs ← whnf lhs;
|
||||
let lhs ← whnf lhs
|
||||
if lhs.isFVar then
|
||||
Prod.snd <$> substCore mvarId hFVarId
|
||||
(·.2) <$> substCore mvarId hFVarId
|
||||
else do
|
||||
throwTacticEx `subst mvarId $
|
||||
"invalid equality proof, it is not of the form (x = t) or (t = x)"
|
||||
++ indentExpr hLocalDecl.type
|
||||
| none => do
|
||||
mctx ← getMCtx;
|
||||
lctx ← getLCtx;
|
||||
some (fvarId, symm) ← lctx.findDeclM?
|
||||
(fun localDecl => if localDecl.isAuxDecl then pure none else do
|
||||
eq? ← matchEq? localDecl.type;
|
||||
match eq? with
|
||||
| some (α, lhs, rhs) =>
|
||||
if rhs.isFVar && rhs.fvarId! == hFVarId && !mctx.exprDependsOn lhs hFVarId then
|
||||
pure $ some (localDecl.fvarId, true)
|
||||
else if lhs.isFVar && lhs.fvarId! == hFVarId && !mctx.exprDependsOn rhs hFVarId then
|
||||
pure $ some (localDecl.fvarId, false)
|
||||
else
|
||||
pure none
|
||||
| _ => pure none)
|
||||
| throwTacticEx `subst mvarId ("did not find equation for eliminating '" ++ mkFVar hFVarId ++ "'");
|
||||
Prod.snd <$> substCore mvarId fvarId symm
|
||||
throwTacticEx `subst mvarId msg!"invalid equality proof, it is not of the form (x = t) or (t = x){indentExpr hLocalDecl.type}"
|
||||
| none =>
|
||||
let mctx ← getMCtx
|
||||
let lctx ← getLCtx
|
||||
let some (fvarId, symm) ← lctx.findDeclM? fun localDecl => do
|
||||
if localDecl.isAuxDecl then
|
||||
pure none
|
||||
else
|
||||
match (← matchEq? localDecl.type) with
|
||||
| some (α, lhs, rhs) =>
|
||||
if rhs.isFVar && rhs.fvarId! == hFVarId && !mctx.exprDependsOn lhs hFVarId then
|
||||
pure $ some (localDecl.fvarId, true)
|
||||
else if lhs.isFVar && lhs.fvarId! == hFVarId && !mctx.exprDependsOn rhs hFVarId then
|
||||
pure $ some (localDecl.fvarId, false)
|
||||
else
|
||||
pure none
|
||||
| _ => pure none
|
||||
| throwTacticEx `subst mvarId msg!"did not find equation for eliminating '{mkFVar hFVarId}'"
|
||||
(·.2) <$> substCore mvarId fvarId symm
|
||||
|
||||
@[init] private def regTraceClasses : IO Unit :=
|
||||
registerTraceClass `Meta.Tactic.subst
|
||||
|
|
|
|||
43
stage0/src/Lean/Meta/Tactic/Util.lean
generated
43
stage0/src/Lean/Meta/Tactic/Util.lean
generated
|
|
@ -1,3 +1,4 @@
|
|||
#lang lean4
|
||||
/-
|
||||
Copyright (c) 2019 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
|
@ -7,56 +8,50 @@ import Lean.Meta.Basic
|
|||
import Lean.Meta.AppBuilder
|
||||
import Lean.Meta.LevelDefEq
|
||||
|
||||
namespace Lean
|
||||
namespace Meta
|
||||
namespace Lean.Meta
|
||||
|
||||
/-- Aka user name -/
|
||||
def getMVarTag (mvarId : MVarId) : MetaM Name := do
|
||||
mvarDecl ← getMVarDecl mvarId;
|
||||
let mvarDecl ← getMVarDecl mvarId
|
||||
pure mvarDecl.userName
|
||||
|
||||
def setMVarTag (mvarId : MVarId) (tag : Name) : MetaM Unit := do
|
||||
modify $ fun s => { s with mctx := s.mctx.setMVarUserName mvarId tag }
|
||||
|
||||
def appendTag (tag : Name) (suffix : Name) : Name :=
|
||||
let view := extractMacroScopes tag;
|
||||
let view := { view with name := view.name ++ suffix.eraseMacroScopes };
|
||||
let view := extractMacroScopes tag
|
||||
let view := { view with name := view.name ++ suffix.eraseMacroScopes }
|
||||
view.review
|
||||
|
||||
def appendTagSuffix (mvarId : MVarId) (suffix : Name) : MetaM Unit := do
|
||||
tag ← getMVarTag mvarId;
|
||||
let tag ← getMVarTag mvarId
|
||||
setMVarTag mvarId (appendTag tag suffix)
|
||||
|
||||
def mkFreshExprSyntheticOpaqueMVar (type : Expr) (userName : Name := Name.anonymous) : MetaM Expr :=
|
||||
mkFreshExprMVar type MetavarKind.syntheticOpaque userName
|
||||
|
||||
def throwTacticEx {α} (tacticName : Name) (mvarId : MVarId) (msg : MessageData) (ref := Syntax.missing) : MetaM α :=
|
||||
throwError $ "tactic '" ++ tacticName ++ "' failed, " ++ msg ++ Format.line ++ MessageData.ofGoal mvarId
|
||||
throwError! "tactic '{tacticName}' failed, {msg}\n{MessageData.ofGoal mvarId}"
|
||||
|
||||
def checkNotAssigned (mvarId : MVarId) (tacticName : Name) : MetaM Unit :=
|
||||
whenM (isExprMVarAssigned mvarId) $ throwTacticEx tacticName mvarId "metavariable has already been assigned"
|
||||
def checkNotAssigned (mvarId : MVarId) (tacticName : Name) : MetaM Unit := do
|
||||
if (← isExprMVarAssigned mvarId) then
|
||||
throwTacticEx tacticName mvarId "metavariable has already been assigned"
|
||||
|
||||
def getMVarType (mvarId : MVarId) : MetaM Expr := do
|
||||
mvarDecl ← getMVarDecl mvarId;
|
||||
let mvarDecl ← getMVarDecl mvarId
|
||||
pure mvarDecl.type
|
||||
|
||||
def ppGoal (mvarId : MVarId) : MetaM Format := do
|
||||
env ← getEnv;
|
||||
mctx ← getMCtx;
|
||||
opts ← getOptions;
|
||||
liftIO $ Lean.ppGoal { env := env, mctx := mctx, opts := opts } mvarId
|
||||
liftIO $ Lean.ppGoal { env := (← getEnv), mctx := (← getMCtx), opts := (← getOptions) } mvarId
|
||||
|
||||
@[init] private def regTraceClasses : IO Unit :=
|
||||
registerTraceClass `Meta.Tactic
|
||||
initialize registerTraceClass `Meta.Tactic
|
||||
|
||||
/-- Assign `mvarId` to `sorryAx` -/
|
||||
def admit (mvarId : MVarId) (synthetic := true) : MetaM Unit :=
|
||||
withMVarContext mvarId $ do
|
||||
checkNotAssigned mvarId `admit;
|
||||
mvarType ← getMVarType mvarId;
|
||||
val ← mkSorry mvarType synthetic;
|
||||
assignExprMVar mvarId val;
|
||||
pure ()
|
||||
withMVarContext mvarId do
|
||||
checkNotAssigned mvarId `admit
|
||||
let mvarType ← getMVarType mvarId
|
||||
let val ← mkSorry mvarType synthetic
|
||||
assignExprMVar mvarId val
|
||||
|
||||
end Meta
|
||||
end Lean
|
||||
end Lean.Meta
|
||||
|
|
|
|||
58
stage0/stdlib/Lean/Elab/App.c
generated
58
stage0/stdlib/Lean/Elab/App.c
generated
|
|
@ -120,7 +120,6 @@ lean_object* lean_st_ref_get(lean_object*, lean_object*);
|
|||
lean_object* l_Lean_Meta_withLocalDecl___at___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_addEtaArg___spec__1___rarg(lean_object*, uint8_t, 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_Term_0__Lean_Elab_Term_elabTermAux(lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_forallTelescopeReducing___at___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_hasOptAutoParams___spec__2(lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__7;
|
||||
lean_object* l_List_append___rarg(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_propagateExpectedType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_whnfForall___at___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_synthesizePendingAndNormalizeFunType___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -260,7 +259,6 @@ lean_object* l_Lean_Elab_logException___at___private_Lean_Elab_Term_0__Lean_Elab
|
|||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_toMessageData___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_elabAppLVals___closed__2;
|
||||
lean_object* l_Lean_Name_append___main(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l_Lean_Meta_mkArrow___at___private_Lean_Elab_App_0__Lean_Elab_Term_tryCoeFun___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_shrink___main___rarg(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_propagateExpectedType___closed__9;
|
||||
|
|
@ -292,6 +290,7 @@ lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
|
|||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_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*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_forInAux___main___at___private_Lean_Elab_App_0__Lean_Elab_Term_mkBaseProjections___spec__1___closed__1;
|
||||
lean_object* l_List_lengthAux___main___rarg(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__6;
|
||||
lean_object* l_Lean_Elab_Term_expandApp_match__3___rarg(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_resolveLValAux___lambda__1___closed__4;
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_elabAppArgs___closed__4;
|
||||
|
|
@ -373,7 +372,6 @@ lean_object* l_Lean_FindMVar_main___main___at___private_Lean_Elab_App_0__Lean_El
|
|||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_propagateExpectedType___closed__10;
|
||||
lean_object* l_Lean_LocalDecl_toExpr(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_elabChoice(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_resolveLValLoop_match__2(lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at___private_Lean_Elab_App_0__Lean_Elab_Term_mergeFailures___spec__1___closed__3;
|
||||
lean_object* l_Array_umapMAux___main___at___private_Lean_Elab_App_0__Lean_Elab_Term_elabAppAux___spec__1___closed__2;
|
||||
|
|
@ -609,6 +607,7 @@ lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_tryCoeFun___lambda__1__
|
|||
lean_object* l_List_foldlM___main___at___private_Lean_Elab_App_0__Lean_Elab_Term_elabAppFnId___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_propagateExpectedType_match__2___rarg(lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Expr_ctorName___closed__11;
|
||||
extern lean_object* l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_resolveLValAux_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Syntax_formatStxAux___main(lean_object*, uint8_t, lean_object*, lean_object*);
|
||||
extern lean_object* l_Nat_Inhabited;
|
||||
|
|
@ -623,6 +622,7 @@ lean_object* l_Lean_Name_toStringWithSep___main(lean_object*, lean_object*);
|
|||
lean_object* l_Lean_Elab_Term_ElabAppArgs_main_match__1___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_elabAppFn___closed__9;
|
||||
lean_object* l_Lean_Meta_getLocalDecl___at___private_Lean_Elab_App_0__Lean_Elab_Term_addLValArg___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l_Array_iterateMAux___main___at_Lean_Elab_Term_expandApp___spec__1___closed__2;
|
||||
lean_object* l___private_Lean_Util_Trace_5__getResetTraces___at_Lean_Meta_isLevelDefEq___spec__4___rarg(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_getForallBody_match__2(lean_object*);
|
||||
|
|
@ -1403,7 +1403,7 @@ x_57 = l___private_Lean_Elab_App_0__Lean_Elab_Term_tryCoeFun___closed__4;
|
|||
x_58 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_58, 0, x_57);
|
||||
lean_ctor_set(x_58, 1, x_56);
|
||||
x_59 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_59 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_60 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_60, 0, x_58);
|
||||
lean_ctor_set(x_60, 1, x_59);
|
||||
|
|
@ -9369,7 +9369,7 @@ lean_dec(x_51);
|
|||
lean_inc(x_21);
|
||||
x_77 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_77, 0, x_21);
|
||||
x_78 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_78 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_79 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_79, 0, x_78);
|
||||
lean_ctor_set(x_79, 1, x_77);
|
||||
|
|
@ -9654,7 +9654,7 @@ lean_dec(x_128);
|
|||
lean_inc(x_21);
|
||||
x_147 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_147, 0, x_21);
|
||||
x_148 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_148 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_149 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_149, 0, x_148);
|
||||
lean_ctor_set(x_149, 1, x_147);
|
||||
|
|
@ -9941,7 +9941,7 @@ lean_dec(x_195);
|
|||
lean_inc(x_21);
|
||||
x_214 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_214, 0, x_21);
|
||||
x_215 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_215 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_216 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_216, 0, x_215);
|
||||
lean_ctor_set(x_216, 1, x_214);
|
||||
|
|
@ -10177,7 +10177,7 @@ lean_ctor_set(x_295, 0, x_11);
|
|||
x_296 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_296, 0, x_294);
|
||||
lean_ctor_set(x_296, 1, x_295);
|
||||
x_297 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_297 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_298 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_298, 0, x_296);
|
||||
lean_ctor_set(x_298, 1, x_297);
|
||||
|
|
@ -10643,7 +10643,7 @@ lean_dec(x_362);
|
|||
lean_inc(x_332);
|
||||
x_381 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_381, 0, x_332);
|
||||
x_382 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_382 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_383 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_383, 0, x_382);
|
||||
lean_ctor_set(x_383, 1, x_381);
|
||||
|
|
@ -10875,7 +10875,7 @@ lean_ctor_set(x_460, 0, x_319);
|
|||
x_461 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_461, 0, x_459);
|
||||
lean_ctor_set(x_461, 1, x_460);
|
||||
x_462 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_462 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_463 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_463, 0, x_461);
|
||||
lean_ctor_set(x_463, 1, x_462);
|
||||
|
|
@ -11919,7 +11919,7 @@ x_41 = l___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_finalize___lambda
|
|||
x_42 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_42, 0, x_41);
|
||||
lean_ctor_set(x_42, 1, x_40);
|
||||
x_43 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_43 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_44 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_44, 0, x_42);
|
||||
lean_ctor_set(x_44, 1, x_43);
|
||||
|
|
@ -12112,7 +12112,7 @@ x_90 = l___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_finalize___lambda
|
|||
x_91 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_91, 0, x_90);
|
||||
lean_ctor_set(x_91, 1, x_89);
|
||||
x_92 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_92 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_93 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_93, 0, x_91);
|
||||
lean_ctor_set(x_93, 1, x_92);
|
||||
|
|
@ -12241,7 +12241,7 @@ lean_ctor_set(x_138, 0, x_3);
|
|||
x_139 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_139, 0, x_137);
|
||||
lean_ctor_set(x_139, 1, x_138);
|
||||
x_140 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_140 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_141 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_141, 0, x_139);
|
||||
lean_ctor_set(x_141, 1, x_140);
|
||||
|
|
@ -14899,7 +14899,7 @@ lean_ctor_set(x_53, 0, x_17);
|
|||
x_54 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_54, 0, x_52);
|
||||
lean_ctor_set(x_54, 1, x_53);
|
||||
x_55 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_55 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_56 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_56, 0, x_54);
|
||||
lean_ctor_set(x_56, 1, x_55);
|
||||
|
|
@ -14974,7 +14974,7 @@ lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_throwLValError___rarg(l
|
|||
_start:
|
||||
{
|
||||
lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21;
|
||||
x_11 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_11 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_12 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_12, 0, x_11);
|
||||
lean_ctor_set(x_12, 1, x_3);
|
||||
|
|
@ -14985,7 +14985,7 @@ x_14 = l_Lean_indentExpr(x_1);
|
|||
x_15 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_15, 0, x_13);
|
||||
lean_ctor_set(x_15, 1, x_14);
|
||||
x_16 = l_Lean_Elab_Term_mkTypeMismatchError___closed__7;
|
||||
x_16 = l_Lean_Elab_Term_mkTypeMismatchError___closed__6;
|
||||
x_17 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_17, 0, x_15);
|
||||
lean_ctor_set(x_17, 1, x_16);
|
||||
|
|
@ -15931,7 +15931,7 @@ lean_ctor_set(x_45, 0, x_32);
|
|||
x_46 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_46, 0, x_44);
|
||||
lean_ctor_set(x_46, 1, x_45);
|
||||
x_47 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_47 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_48 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_48, 0, x_46);
|
||||
lean_ctor_set(x_48, 1, x_47);
|
||||
|
|
@ -16001,7 +16001,7 @@ lean_ctor_set(x_65, 0, x_32);
|
|||
x_66 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_66, 0, x_64);
|
||||
lean_ctor_set(x_66, 1, x_65);
|
||||
x_67 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_67 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_68 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_68, 0, x_66);
|
||||
lean_ctor_set(x_68, 1, x_67);
|
||||
|
|
@ -16102,7 +16102,7 @@ lean_ctor_set(x_90, 0, x_79);
|
|||
x_91 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_91, 0, x_89);
|
||||
lean_ctor_set(x_91, 1, x_90);
|
||||
x_92 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_92 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_93 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_93, 0, x_91);
|
||||
lean_ctor_set(x_93, 1, x_92);
|
||||
|
|
@ -16170,7 +16170,7 @@ lean_ctor_set(x_109, 0, x_79);
|
|||
x_110 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_110, 0, x_108);
|
||||
lean_ctor_set(x_110, 1, x_109);
|
||||
x_111 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_111 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_112 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_112, 0, x_110);
|
||||
lean_ctor_set(x_112, 1, x_111);
|
||||
|
|
@ -16300,7 +16300,7 @@ lean_ctor_set(x_139, 0, x_126);
|
|||
x_140 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_140, 0, x_138);
|
||||
lean_ctor_set(x_140, 1, x_139);
|
||||
x_141 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_141 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_142 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_142, 0, x_140);
|
||||
lean_ctor_set(x_142, 1, x_141);
|
||||
|
|
@ -16371,7 +16371,7 @@ lean_ctor_set(x_160, 0, x_126);
|
|||
x_161 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_161, 0, x_159);
|
||||
lean_ctor_set(x_161, 1, x_160);
|
||||
x_162 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_162 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_163 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_163, 0, x_161);
|
||||
lean_ctor_set(x_163, 1, x_162);
|
||||
|
|
@ -16475,7 +16475,7 @@ lean_ctor_set(x_187, 0, x_176);
|
|||
x_188 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_188, 0, x_186);
|
||||
lean_ctor_set(x_188, 1, x_187);
|
||||
x_189 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_189 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_190 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_190, 0, x_188);
|
||||
lean_ctor_set(x_190, 1, x_189);
|
||||
|
|
@ -16544,7 +16544,7 @@ lean_ctor_set(x_207, 0, x_176);
|
|||
x_208 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_208, 0, x_206);
|
||||
lean_ctor_set(x_208, 1, x_207);
|
||||
x_209 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_209 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_210 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_210, 0, x_208);
|
||||
lean_ctor_set(x_210, 1, x_209);
|
||||
|
|
@ -16660,7 +16660,7 @@ x_234 = l___private_Lean_Elab_App_0__Lean_Elab_Term_resolveLValAux___closed__16;
|
|||
x_235 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_235, 0, x_234);
|
||||
lean_ctor_set(x_235, 1, x_233);
|
||||
x_236 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_236 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_237 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_237, 0, x_235);
|
||||
lean_ctor_set(x_237, 1, x_236);
|
||||
|
|
@ -16708,7 +16708,7 @@ x_247 = l___private_Lean_Elab_App_0__Lean_Elab_Term_resolveLValAux___closed__16;
|
|||
x_248 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_248, 0, x_247);
|
||||
lean_ctor_set(x_248, 1, x_246);
|
||||
x_249 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_249 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_250 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_250, 0, x_248);
|
||||
lean_ctor_set(x_250, 1, x_249);
|
||||
|
|
@ -26539,7 +26539,7 @@ lean_inc(x_19);
|
|||
x_20 = l_Lean_fmt___at_Lean_Position_Lean_HasFormat___spec__1(x_19);
|
||||
x_21 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_21, 0, x_20);
|
||||
x_22 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_22 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_23 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_23, 0, x_22);
|
||||
lean_ctor_set(x_23, 1, x_21);
|
||||
|
|
@ -26619,7 +26619,7 @@ lean_inc(x_46);
|
|||
x_47 = l_Lean_fmt___at_Lean_Position_Lean_HasFormat___spec__1(x_46);
|
||||
x_48 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_48, 0, x_47);
|
||||
x_49 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_49 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_50 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_50, 0, x_49);
|
||||
lean_ctor_set(x_50, 1, x_48);
|
||||
|
|
@ -26955,7 +26955,7 @@ x_17 = l___private_Lean_Elab_App_0__Lean_Elab_Term_mergeFailures___rarg___closed
|
|||
x_18 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_17);
|
||||
lean_ctor_set(x_18, 1, x_16);
|
||||
x_19 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_19 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_20 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_20, 0, x_18);
|
||||
lean_ctor_set(x_20, 1, x_19);
|
||||
|
|
|
|||
4
stage0/stdlib/Lean/Elab/Binders.c
generated
4
stage0/stdlib/Lean/Elab/Binders.c
generated
|
|
@ -202,7 +202,6 @@ lean_object* l_Lean_Meta_isClass_x3f___at___private_Lean_Elab_Binders_0__Lean_El
|
|||
lean_object* l_Lean_Elab_Term_quoteAutoTactic___closed__14;
|
||||
lean_object* l___private_Lean_Meta_Basic_28__withLetDeclImp___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_mkFreshInstanceName(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l_Lean_Elab_Term_elabLetDeclAux___closed__1;
|
||||
lean_object* l_Lean_KernelException_toMessageData(lean_object*, lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Term_elabFun___closed__1;
|
||||
|
|
@ -459,6 +458,7 @@ lean_object* l_Lean_Elab_Term_elabLetDeclAux___closed__3;
|
|||
lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Term_elabForall___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Binders_0__Lean_Elab_Term_expandLetEqnsDeclVal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_elabForall(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l___private_Lean_Elab_Binders_0__Lean_Elab_Term_getFunBinderIds_x3f_loop_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Binders_0__Lean_Elab_Term_expandBinderType___boxed(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_quoteAutoTactic___closed__2;
|
||||
|
|
@ -19383,7 +19383,7 @@ lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean
|
|||
lean_inc(x_1);
|
||||
x_49 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_49, 0, x_1);
|
||||
x_50 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_50 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_51 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_51, 0, x_50);
|
||||
lean_ctor_set(x_51, 1, x_49);
|
||||
|
|
|
|||
22
stage0/stdlib/Lean/Elab/BuiltinNotation.c
generated
22
stage0/stdlib/Lean/Elab/BuiltinNotation.c
generated
|
|
@ -301,7 +301,6 @@ lean_object* l___regBuiltin_Lean_Elab_Term_elabNativeDecide___closed__1;
|
|||
lean_object* l___regBuiltin_Lean_Elab_Term_expandMod___closed__1;
|
||||
extern lean_object* l___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_letBindRhss___closed__13;
|
||||
extern lean_object* l_Lean_Meta_mkDecideProof___rarg___closed__1;
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l___regBuiltin_Lean_Elab_Term_expandAndThen___closed__1;
|
||||
lean_object* l___private_Lean_Elab_BuiltinNotation_0__Lean_Elab_Term_elabTParserMacroAux___closed__10;
|
||||
lean_object* l_Lean_Elab_Term_expandDiv___closed__1;
|
||||
|
|
@ -722,6 +721,7 @@ lean_object* l___regBuiltin_Lean_Elab_Term_expandMapRev___closed__1;
|
|||
lean_object* l___regBuiltin_Lean_Elab_Term_expandSub___closed__1;
|
||||
lean_object* l_Lean_Name_toStringWithSep___main(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_expandMapRev___closed__2;
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l_Lean_Elab_Term_expandMap___closed__4;
|
||||
extern lean_object* l___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_toPreterm___lambda__4___closed__6;
|
||||
lean_object* l_Lean_Elab_Term_elabTParserMacro___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -2007,7 +2007,7 @@ x_38 = l_Lean_Elab_Term_elabAnonymousCtor___closed__7;
|
|||
x_39 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_39, 0, x_38);
|
||||
lean_ctor_set(x_39, 1, x_37);
|
||||
x_40 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_40 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_41 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_41, 0, x_39);
|
||||
lean_ctor_set(x_41, 1, x_40);
|
||||
|
|
@ -2045,7 +2045,7 @@ x_47 = l_Lean_Elab_Term_elabAnonymousCtor___closed__9;
|
|||
x_48 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_48, 0, x_47);
|
||||
lean_ctor_set(x_48, 1, x_46);
|
||||
x_49 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_49 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_50 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_50, 0, x_48);
|
||||
lean_ctor_set(x_50, 1, x_49);
|
||||
|
|
@ -2263,7 +2263,7 @@ x_125 = l_Lean_Elab_Term_elabAnonymousCtor___closed__9;
|
|||
x_126 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_126, 0, x_125);
|
||||
lean_ctor_set(x_126, 1, x_124);
|
||||
x_127 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_127 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_128 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_128, 0, x_126);
|
||||
lean_ctor_set(x_128, 1, x_127);
|
||||
|
|
@ -2289,7 +2289,7 @@ x_131 = l_Lean_Elab_Term_elabAnonymousCtor___closed__7;
|
|||
x_132 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_132, 0, x_131);
|
||||
lean_ctor_set(x_132, 1, x_130);
|
||||
x_133 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_133 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_134 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_134, 0, x_132);
|
||||
lean_ctor_set(x_134, 1, x_133);
|
||||
|
|
@ -2315,7 +2315,7 @@ x_137 = l_Lean_Elab_Term_elabAnonymousCtor___closed__7;
|
|||
x_138 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_138, 0, x_137);
|
||||
lean_ctor_set(x_138, 1, x_136);
|
||||
x_139 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_139 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_140 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_140, 0, x_138);
|
||||
lean_ctor_set(x_140, 1, x_139);
|
||||
|
|
@ -5941,7 +5941,7 @@ x_13 = l___private_Lean_Elab_BuiltinNotation_0__Lean_Elab_Term_elabClosedTerm___
|
|||
x_14 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_14, 0, x_13);
|
||||
lean_ctor_set(x_14, 1, x_12);
|
||||
x_15 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_15 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_16 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_16, 0, x_14);
|
||||
lean_ctor_set(x_16, 1, x_15);
|
||||
|
|
@ -6024,7 +6024,7 @@ x_17 = l___private_Lean_Elab_BuiltinNotation_0__Lean_Elab_Term_elabClosedTerm___
|
|||
x_18 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_17);
|
||||
lean_ctor_set(x_18, 1, x_16);
|
||||
x_19 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_19 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_20 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_20, 0, x_18);
|
||||
lean_ctor_set(x_20, 1, x_19);
|
||||
|
|
@ -6363,7 +6363,7 @@ x_22 = l_Lean_Elab_Term_elabNativeRefl___lambda__1___closed__2;
|
|||
x_23 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_23, 0, x_22);
|
||||
lean_ctor_set(x_23, 1, x_21);
|
||||
x_24 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_24 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_25 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_23);
|
||||
lean_ctor_set(x_25, 1, x_24);
|
||||
|
|
@ -6600,7 +6600,7 @@ x_24 = l_Lean_Elab_Term_elabNativeRefl___closed__2;
|
|||
x_25 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_24);
|
||||
lean_ctor_set(x_25, 1, x_23);
|
||||
x_26 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_26 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_27 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_27, 0, x_25);
|
||||
lean_ctor_set(x_27, 1, x_26);
|
||||
|
|
@ -7006,7 +7006,7 @@ x_27 = l___private_Lean_Elab_BuiltinNotation_0__Lean_Elab_Term_getPropToDecide__
|
|||
x_28 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_28, 0, x_27);
|
||||
lean_ctor_set(x_28, 1, x_26);
|
||||
x_29 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_29 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_30 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_30, 0, x_28);
|
||||
lean_ctor_set(x_30, 1, x_29);
|
||||
|
|
|
|||
116
stage0/stdlib/Lean/Elab/Do.c
generated
116
stage0/stdlib/Lean/Elab/Do.c
generated
|
|
@ -25,6 +25,7 @@ lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Term_Do_getDoLetRecVars___s
|
|||
lean_object* l_Array_iterateMAux___main___at_Lean_Elab_Term_Do_ToCodeBlock_getTryCatchUpdatedVars___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_pullExitPointsAux___lambda__2(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_Elab_Term_Do_ToTerm_returnToTermCore(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__5;
|
||||
lean_object* l___private_Lean_Elab_Do_0__Lean_Elab_Term_Do_nameSetToArray(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_ToCodeBlock_doTryToCode___lambda__5___closed__3;
|
||||
lean_object* lean_array_set(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -270,7 +271,6 @@ extern lean_object* l_Array_myMacro____x40_Init_Data_Array_Macros___hyg_464____c
|
|||
lean_object* l_Lean_Elab_Term_Do_ToTerm_run___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Do_0__Lean_Elab_Term_hasLiftMethod___boxed(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_pullExitPointsAux___lambda__1___closed__1;
|
||||
extern lean_object* l___private_Lean_Data_Format_10__pushNewline___closed__1;
|
||||
lean_object* l_Lean_Elab_Term_Do_concat___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
extern lean_object* l___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_getHeadInfo___elambda__2___closed__4;
|
||||
|
|
@ -405,12 +405,10 @@ lean_object* l_Lean_Elab_Term_Do_hasReturn_match__1___rarg(lean_object*, lean_ob
|
|||
lean_object* l___regBuiltin_Lean_Elab_Term_elabLiftMethod___closed__1;
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Elab_Term_Do_ToCodeBlock_doTryToCode___spec__1___closed__3;
|
||||
lean_object* l_Lean_Elab_Term_Do_ToTerm_matchNestedTermResult___closed__24;
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l_Lean_throwErrorAt___at_Lean_Elab_Term_Do_mkJmp___spec__4___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_ToTerm_continueToTermCore___closed__19;
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Elab_Term_Do_ToTerm_mkUVarTuple___spec__1___boxed(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getDecLevel___at___private_Lean_Elab_Term_0__Lean_Elab_Term_tryLiftAndCoe___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__22;
|
||||
lean_object* l_Lean_Elab_Term_Do_addFreshJP___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_ToTerm_breakToTermCore___closed__20;
|
||||
lean_object* l_Lean_Elab_Term_Do_ToTerm_mkIte___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -572,7 +570,6 @@ lean_object* l___private_Lean_Elab_Do_0__Lean_Elab_Term_getDoSeqElems___closed__
|
|||
lean_object* l_Lean_Elab_Term_Do_mkSingletonDoSeq(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_ToTerm_mkJoinPointCore_match__1___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_mkReassignCore___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
lean_object* l_Lean_Elab_Term_Do_mkAuxDeclFor___rarg___lambda__5___closed__5;
|
||||
lean_object* l_Lean_Elab_Term_Do_getPatternVarNames_match__1(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_getDoHaveVar___closed__1;
|
||||
|
|
@ -980,6 +977,7 @@ lean_object* l_Lean_Elab_Term_Do_ToTerm_mkJoinPointCore_match__1(lean_object*);
|
|||
lean_object* l_Lean_Elab_Term_Do_ToTerm_reassignToTermCore(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_hasExitPointPred_loop_match__1(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_getDoLetArrowVars___closed__1;
|
||||
extern lean_object* l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
lean_object* l_List_toArrayAux___main___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_ToTerm_matchNestedTermResult___closed__38;
|
||||
lean_object* l_Lean_Elab_Term_Do_ToTerm_matchNestedTermResult___closed__21;
|
||||
|
|
@ -999,6 +997,7 @@ lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Term_Do_ToCodeBlock_checkRe
|
|||
lean_object* l___private_Init_Data_Array_Basic_3__iterateRevMAux___main___at___private_Lean_Elab_Do_0__Lean_Elab_Term_Do_mkTuple___spec__1___closed__1;
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Elab_Term_Do_mkJmp___spec__1(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_ToTerm_breakToTermCore___closed__1;
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l_Lean_Elab_Term_Do_ToCodeBlock_doSeqToCode_match__2(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_Do_getDoReassignVars___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_iterateMAux___main___at_Lean_Elab_Term_Do_ToCodeBlock_doTryToCode___spec__2___closed__4;
|
||||
|
|
@ -2596,7 +2595,7 @@ x_16 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop(x_1, x_15);
|
|||
x_17 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_17, 0, x_14);
|
||||
lean_ctor_set(x_17, 1, x_16);
|
||||
x_18 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_18 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_19 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_19, 0, x_17);
|
||||
lean_ctor_set(x_19, 1, x_18);
|
||||
|
|
@ -2693,30 +2692,21 @@ return x_2;
|
|||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__5() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l___private_Lean_Data_Format_10__pushNewline___closed__1;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__6() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string("break ");
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__7() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__6() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__6;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__5;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__8() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__7() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -2724,16 +2714,16 @@ x_1 = lean_mk_string("continue ");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__9() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__8() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__8;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__7;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__10() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__9() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -2741,16 +2731,16 @@ x_1 = lean_mk_string("return ");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__11() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__10() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__10;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__9;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__12() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__11() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -2758,16 +2748,16 @@ x_1 = lean_mk_string("if ");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__13() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__12() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__12;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__11;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__14() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__13() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -2775,16 +2765,16 @@ x_1 = lean_mk_string(" then ");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__15() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__14() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__14;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__13;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__16() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__15() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -2792,16 +2782,16 @@ x_1 = lean_mk_string("\nelse");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__17() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__16() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__16;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__15;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__18() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__17() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
|
|
@ -2810,7 +2800,7 @@ x_2 = l_Lean_stringToMessageData(x_1);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__19() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__18() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -2818,16 +2808,16 @@ x_1 = lean_mk_string(" with");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__20() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__19() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__19;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__18;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__21() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__20() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -2835,11 +2825,11 @@ x_1 = lean_mk_string("jmp ");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__22() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__21() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__21;
|
||||
x_1 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__20;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
|
|
@ -2870,7 +2860,7 @@ x_10 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop(x_1, x_4);
|
|||
x_11 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_11, 0, x_9);
|
||||
lean_ctor_set(x_11, 1, x_10);
|
||||
x_12 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_12 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_13 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_13, 0, x_11);
|
||||
lean_ctor_set(x_13, 1, x_12);
|
||||
|
|
@ -2886,7 +2876,7 @@ lean_inc(x_15);
|
|||
lean_dec(x_2);
|
||||
x_16 = l___private_Lean_Elab_Do_0__Lean_Elab_Term_Do_varsToMessageData(x_14);
|
||||
lean_dec(x_14);
|
||||
x_17 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_17 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_18 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_17);
|
||||
lean_ctor_set(x_18, 1, x_16);
|
||||
|
|
@ -2945,7 +2935,7 @@ x_43 = l_Lean_indentD(x_42);
|
|||
x_44 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_44, 0, x_41);
|
||||
lean_ctor_set(x_44, 1, x_43);
|
||||
x_45 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__5;
|
||||
x_45 = l_Lean_Meta_throwTacticEx___rarg___closed__5;
|
||||
x_46 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_46, 0, x_44);
|
||||
lean_ctor_set(x_46, 1, x_45);
|
||||
|
|
@ -2953,7 +2943,7 @@ x_47 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop(x_1, x_27);
|
|||
x_48 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_48, 0, x_46);
|
||||
lean_ctor_set(x_48, 1, x_47);
|
||||
x_49 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_49 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_50 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_50, 0, x_48);
|
||||
lean_ctor_set(x_50, 1, x_49);
|
||||
|
|
@ -2969,11 +2959,11 @@ lean_inc(x_52);
|
|||
lean_dec(x_2);
|
||||
x_53 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_53, 0, x_51);
|
||||
x_54 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_54 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_55 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_55, 0, x_54);
|
||||
lean_ctor_set(x_55, 1, x_53);
|
||||
x_56 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__5;
|
||||
x_56 = l_Lean_Meta_throwTacticEx___rarg___closed__5;
|
||||
x_57 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_57, 0, x_55);
|
||||
lean_ctor_set(x_57, 1, x_56);
|
||||
|
|
@ -3001,11 +2991,11 @@ case 5:
|
|||
{
|
||||
lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66;
|
||||
lean_dec(x_2);
|
||||
x_63 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__7;
|
||||
x_63 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__6;
|
||||
x_64 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_64, 0, x_63);
|
||||
lean_ctor_set(x_64, 1, x_1);
|
||||
x_65 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_65 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_66 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_66, 0, x_64);
|
||||
lean_ctor_set(x_66, 1, x_65);
|
||||
|
|
@ -3015,11 +3005,11 @@ case 6:
|
|||
{
|
||||
lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70;
|
||||
lean_dec(x_2);
|
||||
x_67 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__9;
|
||||
x_67 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__8;
|
||||
x_68 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_68, 0, x_67);
|
||||
lean_ctor_set(x_68, 1, x_1);
|
||||
x_69 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_69 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_70 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_70, 0, x_68);
|
||||
lean_ctor_set(x_70, 1, x_69);
|
||||
|
|
@ -3033,7 +3023,7 @@ lean_inc(x_71);
|
|||
lean_dec(x_2);
|
||||
x_72 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_72, 0, x_71);
|
||||
x_73 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__11;
|
||||
x_73 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__10;
|
||||
x_74 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_74, 0, x_73);
|
||||
lean_ctor_set(x_74, 1, x_72);
|
||||
|
|
@ -3044,7 +3034,7 @@ lean_ctor_set(x_76, 1, x_75);
|
|||
x_77 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_77, 0, x_76);
|
||||
lean_ctor_set(x_77, 1, x_1);
|
||||
x_78 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_78 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_79 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_79, 0, x_77);
|
||||
lean_ctor_set(x_79, 1, x_78);
|
||||
|
|
@ -3062,11 +3052,11 @@ lean_inc(x_82);
|
|||
lean_dec(x_2);
|
||||
x_83 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_83, 0, x_80);
|
||||
x_84 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__13;
|
||||
x_84 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__12;
|
||||
x_85 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_85, 0, x_84);
|
||||
lean_ctor_set(x_85, 1, x_83);
|
||||
x_86 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__15;
|
||||
x_86 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__14;
|
||||
x_87 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_87, 0, x_85);
|
||||
lean_ctor_set(x_87, 1, x_86);
|
||||
|
|
@ -3076,7 +3066,7 @@ x_89 = l_Lean_indentD(x_88);
|
|||
x_90 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_90, 0, x_87);
|
||||
lean_ctor_set(x_90, 1, x_89);
|
||||
x_91 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__17;
|
||||
x_91 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__16;
|
||||
x_92 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_92, 0, x_90);
|
||||
lean_ctor_set(x_92, 1, x_91);
|
||||
|
|
@ -3084,7 +3074,7 @@ x_93 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop(x_1, x_82);
|
|||
x_94 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_94, 0, x_92);
|
||||
lean_ctor_set(x_94, 1, x_93);
|
||||
x_95 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_95 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_96 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_96, 0, x_94);
|
||||
lean_ctor_set(x_96, 1, x_95);
|
||||
|
|
@ -3100,11 +3090,11 @@ lean_inc(x_98);
|
|||
lean_dec(x_2);
|
||||
x_99 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_99, 0, x_97);
|
||||
x_100 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__18;
|
||||
x_100 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__17;
|
||||
x_101 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_101, 0, x_100);
|
||||
lean_ctor_set(x_101, 1, x_99);
|
||||
x_102 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__20;
|
||||
x_102 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__19;
|
||||
x_103 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_103, 0, x_101);
|
||||
lean_ctor_set(x_103, 1, x_102);
|
||||
|
|
@ -3129,7 +3119,7 @@ lean_dec(x_2);
|
|||
x_110 = lean_simp_macro_scopes(x_108);
|
||||
x_111 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_111, 0, x_110);
|
||||
x_112 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__22;
|
||||
x_112 = l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__21;
|
||||
x_113 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_113, 0, x_112);
|
||||
lean_ctor_set(x_113, 1, x_111);
|
||||
|
|
@ -3145,7 +3135,7 @@ lean_dec(x_117);
|
|||
x_119 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_119, 0, x_115);
|
||||
lean_ctor_set(x_119, 1, x_118);
|
||||
x_120 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_120 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_121 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_121, 0, x_119);
|
||||
lean_ctor_set(x_121, 1, x_120);
|
||||
|
|
@ -31607,7 +31597,7 @@ lean_dec(x_26);
|
|||
x_29 = lean_simp_macro_scopes(x_23);
|
||||
x_30 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_30, 0, x_29);
|
||||
x_31 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_31 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_32 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_32, 0, x_31);
|
||||
lean_ctor_set(x_32, 1, x_30);
|
||||
|
|
@ -31667,7 +31657,7 @@ lean_dec(x_26);
|
|||
x_45 = lean_simp_macro_scopes(x_23);
|
||||
x_46 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_46, 0, x_45);
|
||||
x_47 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_47 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_48 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_48, 0, x_47);
|
||||
lean_ctor_set(x_48, 1, x_46);
|
||||
|
|
@ -41225,7 +41215,7 @@ x_103 = l_Lean_Elab_Term_Do_ToCodeBlock_doSeqToCode___closed__10;
|
|||
x_104 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_104, 0, x_103);
|
||||
lean_ctor_set(x_104, 1, x_102);
|
||||
x_105 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_105 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_106 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_106, 0, x_104);
|
||||
lean_ctor_set(x_106, 1, x_105);
|
||||
|
|
@ -43113,7 +43103,7 @@ x_543 = l_Lean_Elab_Term_Do_ToCodeBlock_doSeqToCode___closed__10;
|
|||
x_544 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_544, 0, x_543);
|
||||
lean_ctor_set(x_544, 1, x_542);
|
||||
x_545 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_545 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_546 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_546, 0, x_544);
|
||||
lean_ctor_set(x_546, 1, x_545);
|
||||
|
|
@ -45240,8 +45230,6 @@ l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__20 = _init_l_Lean_Ela
|
|||
lean_mark_persistent(l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__20);
|
||||
l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__21 = _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__21();
|
||||
lean_mark_persistent(l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__21);
|
||||
l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__22 = _init_l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__22();
|
||||
lean_mark_persistent(l_Lean_Elab_Term_Do_CodeBlocl_toMessageData_loop___closed__22);
|
||||
l_Lean_Elab_Term_Do_mkAuxDeclFor___rarg___lambda__1___closed__1 = _init_l_Lean_Elab_Term_Do_mkAuxDeclFor___rarg___lambda__1___closed__1();
|
||||
lean_mark_persistent(l_Lean_Elab_Term_Do_mkAuxDeclFor___rarg___lambda__1___closed__1);
|
||||
l_Lean_Elab_Term_Do_mkAuxDeclFor___rarg___lambda__1___closed__2 = _init_l_Lean_Elab_Term_Do_mkAuxDeclFor___rarg___lambda__1___closed__2();
|
||||
|
|
|
|||
4
stage0/stdlib/Lean/Elab/LetRec.c
generated
4
stage0/stdlib/Lean/Elab/LetRec.c
generated
|
|
@ -96,7 +96,6 @@ extern lean_object* l_Lean_mkAppStx___closed__6;
|
|||
lean_object* l_Array_umapMAux___main___at___private_Lean_Elab_LetRec_0__Lean_Elab_Term_mkLetRecDeclView___spec__7___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_elabTermEnsuringType___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_ReaderT_bind___at_Lean_Elab_Term_monadLog___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_forallTelescopeCompatibleAux___rarg___lambda__3___closed__3;
|
||||
lean_object* l_Lean_Meta_withLetDecl___at___private_Lean_Elab_LetRec_0__Lean_Elab_Term_withAuxLocalDecls_loop___spec__1(lean_object*);
|
||||
size_t lean_usize_of_nat(lean_object*);
|
||||
lean_object* l_Lean_Elab_elabAttrs___at___private_Lean_Elab_LetRec_0__Lean_Elab_Term_mkLetRecDeclView___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -141,6 +140,7 @@ lean_object* l_Lean_Elab_Term_elabBinders___rarg(lean_object*, lean_object*, lea
|
|||
lean_object* l_Lean_Elab_elabDeclAttrs___at___private_Lean_Elab_LetRec_0__Lean_Elab_Term_mkLetRecDeclView___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at___private_Lean_Elab_LetRec_0__Lean_Elab_Term_mkLetRecDeclView___spec__7(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
lean_object* l_unsafeCast(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at___private_Lean_Elab_LetRec_0__Lean_Elab_Term_mkLetRecDeclView___spec__7___lambda__3___closed__3;
|
||||
lean_object* l_Lean_Elab_elabAttr___at___private_Lean_Elab_LetRec_0__Lean_Elab_Term_mkLetRecDeclView___spec__5___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -334,7 +334,7 @@ if (lean_obj_tag(x_16) == 0)
|
|||
lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23;
|
||||
x_17 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_17, 0, x_1);
|
||||
x_18 = l_Lean_Meta_forallTelescopeCompatibleAux___rarg___lambda__3___closed__3;
|
||||
x_18 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_19 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_19, 0, x_18);
|
||||
lean_ctor_set(x_19, 1, x_17);
|
||||
|
|
|
|||
34
stage0/stdlib/Lean/Elab/Match.c
generated
34
stage0/stdlib/Lean/Elab/Match.c
generated
|
|
@ -326,7 +326,6 @@ lean_object* l___private_Lean_Elab_Match_0__Lean_Elab_Term_CollectPatternVars_na
|
|||
lean_object* l_Lean_Elab_Term_ToDepElimPattern_main_match__4(lean_object*);
|
||||
lean_object* l_Lean_Meta_getExprMVarAssignment_x3f___at___private_Lean_Elab_Match_0__Lean_Elab_Term_ToDepElimPattern_mkLocalDeclFor___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_iterateMAux___main___at_Lean_Elab_Term_withDepElimPatterns___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l_Lean_Elab_Term_CollectPatternVars_resolveId_x3f_match__2___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_whnf___at_Lean_Elab_Term_ToDepElimPattern_main___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Match_0__Lean_Elab_Term_CollectPatternVars_CtorApp_finalize___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -770,6 +769,7 @@ lean_object* l_List_map___main___at_Lean_Elab_Term_reportMatcherResultErrors___s
|
|||
lean_object* l___private_Lean_Elab_Match_0__Lean_Elab_Term_CollectPatternVars_CtorApp_processExplicitArg_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Match_0__Lean_Elab_Term_CollectPatternVars_nameToPattern(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getLocalDecl___at___private_Lean_Elab_App_0__Lean_Elab_Term_addLValArg___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l___private_Lean_Elab_Match_0__Lean_Elab_Term_mkMVarSyntax(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Match_0__Lean_Elab_Term_getMatchAlts_match__2___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_ToDepElimPattern_main___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*);
|
||||
|
|
@ -1458,7 +1458,7 @@ lean_ctor_set(x_55, 0, x_22);
|
|||
x_56 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_56, 0, x_54);
|
||||
lean_ctor_set(x_56, 1, x_55);
|
||||
x_57 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_57 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_58 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_58, 0, x_56);
|
||||
lean_ctor_set(x_58, 1, x_57);
|
||||
|
|
@ -1718,7 +1718,7 @@ lean_ctor_set(x_121, 0, x_22);
|
|||
x_122 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_122, 0, x_120);
|
||||
lean_ctor_set(x_122, 1, x_121);
|
||||
x_123 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_123 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_124 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_124, 0, x_122);
|
||||
lean_ctor_set(x_124, 1, x_123);
|
||||
|
|
@ -4608,7 +4608,7 @@ x_12 = l___private_Lean_Elab_Match_0__Lean_Elab_Term_CollectPatternVars_throwAmb
|
|||
x_13 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_13, 0, x_12);
|
||||
lean_ctor_set(x_13, 1, x_11);
|
||||
x_14 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_14 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_15 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_15, 0, x_13);
|
||||
lean_ctor_set(x_15, 1, x_14);
|
||||
|
|
@ -5889,7 +5889,7 @@ x_22 = l___private_Lean_Elab_Match_0__Lean_Elab_Term_CollectPatternVars_CtorApp_
|
|||
x_23 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_23, 0, x_22);
|
||||
lean_ctor_set(x_23, 1, x_21);
|
||||
x_24 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_24 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_25 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_23);
|
||||
lean_ctor_set(x_25, 1, x_24);
|
||||
|
|
@ -14546,7 +14546,7 @@ x_34 = l_Array_umapMAux___main___at_Lean_Elab_Term_CollectPatternVars_main___spe
|
|||
x_35 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_35, 0, x_34);
|
||||
lean_ctor_set(x_35, 1, x_33);
|
||||
x_36 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_36 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_37 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_37, 0, x_35);
|
||||
lean_ctor_set(x_37, 1, x_36);
|
||||
|
|
@ -17063,7 +17063,7 @@ lean_ctor_set(x_51, 0, x_30);
|
|||
x_52 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_52, 0, x_50);
|
||||
lean_ctor_set(x_52, 1, x_51);
|
||||
x_53 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_53 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_54 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_54, 0, x_52);
|
||||
lean_ctor_set(x_54, 1, x_53);
|
||||
|
|
@ -17172,7 +17172,7 @@ lean_ctor_set(x_99, 0, x_98);
|
|||
x_100 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_100, 0, x_97);
|
||||
lean_ctor_set(x_100, 1, x_99);
|
||||
x_101 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_101 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_102 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_102, 0, x_100);
|
||||
lean_ctor_set(x_102, 1, x_101);
|
||||
|
|
@ -17595,7 +17595,7 @@ x_11 = l___private_Lean_Elab_Match_0__Lean_Elab_Term_ToDepElimPattern_throwInval
|
|||
x_12 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_12, 0, x_11);
|
||||
lean_ctor_set(x_12, 1, x_10);
|
||||
x_13 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_13 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_14 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_14, 0, x_12);
|
||||
lean_ctor_set(x_14, 1, x_13);
|
||||
|
|
@ -21236,7 +21236,7 @@ x_16 = l_Lean_Elab_Term_elabMatchAltView___lambda__1___closed__2;
|
|||
x_17 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_17, 0, x_16);
|
||||
lean_ctor_set(x_17, 1, x_15);
|
||||
x_18 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_18 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_19 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_19, 0, x_17);
|
||||
lean_ctor_set(x_19, 1, x_18);
|
||||
|
|
@ -21539,7 +21539,7 @@ x_28 = l_Lean_Elab_Term_elabMatchAltView___closed__2;
|
|||
x_29 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_29, 0, x_28);
|
||||
lean_ctor_set(x_29, 1, x_27);
|
||||
x_30 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_30 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_31 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_31, 0, x_29);
|
||||
lean_ctor_set(x_31, 1, x_30);
|
||||
|
|
@ -21691,7 +21691,7 @@ x_74 = l_Lean_Elab_Term_elabMatchAltView___closed__2;
|
|||
x_75 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_75, 0, x_74);
|
||||
lean_ctor_set(x_75, 1, x_73);
|
||||
x_76 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_76 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_77 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_77, 0, x_75);
|
||||
lean_ctor_set(x_77, 1, x_76);
|
||||
|
|
@ -21922,7 +21922,7 @@ x_15 = l_Lean_Elab_Term_reportMatcherResultErrors___lambda__1___closed__2;
|
|||
x_16 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_16, 0, x_15);
|
||||
lean_ctor_set(x_16, 1, x_14);
|
||||
x_17 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_17 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_18 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_16);
|
||||
lean_ctor_set(x_18, 1, x_17);
|
||||
|
|
@ -21975,7 +21975,7 @@ x_12 = l_Lean_Elab_Term_reportMatcherResultErrors___closed__2;
|
|||
x_13 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_13, 0, x_12);
|
||||
lean_ctor_set(x_13, 1, x_11);
|
||||
x_14 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_14 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_15 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_15, 0, x_13);
|
||||
lean_ctor_set(x_15, 1, x_14);
|
||||
|
|
@ -22731,7 +22731,7 @@ x_65 = l___private_Lean_Elab_Match_0__Lean_Elab_Term_elabMatchAux___closed__4;
|
|||
x_66 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_66, 0, x_65);
|
||||
lean_ctor_set(x_66, 1, x_64);
|
||||
x_67 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_67 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_68 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_68, 0, x_66);
|
||||
lean_ctor_set(x_68, 1, x_67);
|
||||
|
|
@ -23010,7 +23010,7 @@ x_120 = l___private_Lean_Elab_Match_0__Lean_Elab_Term_elabMatchAux___closed__6;
|
|||
x_121 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_121, 0, x_120);
|
||||
lean_ctor_set(x_121, 1, x_119);
|
||||
x_122 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_122 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_123 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_123, 0, x_121);
|
||||
lean_ctor_set(x_123, 1, x_122);
|
||||
|
|
@ -24419,7 +24419,7 @@ lean_ctor_set(x_52, 0, x_36);
|
|||
x_53 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_53, 0, x_51);
|
||||
lean_ctor_set(x_53, 1, x_52);
|
||||
x_54 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_54 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_55 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_55, 0, x_53);
|
||||
lean_ctor_set(x_55, 1, x_54);
|
||||
|
|
|
|||
4
stage0/stdlib/Lean/Elab/MutualDef.c
generated
4
stage0/stdlib/Lean/Elab/MutualDef.c
generated
|
|
@ -271,6 +271,7 @@ lean_object* l_Std_RBNode_find___main___at___private_Lean_Elab_MutualDef_0__Lean
|
|||
lean_object* l_Lean_Meta_forallBoundedTelescope___at_Lean_Elab_Term_elabLetDeclAux___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Command_mkDefViewOfConstant___closed__8;
|
||||
lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_instantiateMVarsAtHeader___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_revert___spec__2(lean_object*, lean_object*);
|
||||
lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Command_elabMutualDef___spec__5(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_MutualClosure_FixPoint_merge___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_check___lambda__4___closed__3;
|
||||
|
|
@ -545,7 +546,6 @@ lean_object* lean_local_ctx_find(lean_object*, lean_object*);
|
|||
lean_object* l_List_forM___main___at_Lean_Elab_Term_MutualClosure_main___spec__3___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_checkKinds___lambda__1___closed__2;
|
||||
uint8_t l_Lean_Elab_isFreshInstanceName(lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_revert___spec__3(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_checkModifiers___closed__3;
|
||||
lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_removeUnusedVars_match__1(lean_object*);
|
||||
lean_object* l_Lean_Elab_fixLevelParams(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -12650,7 +12650,7 @@ lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean
|
|||
lean_inc(x_3);
|
||||
x_13 = x_3;
|
||||
x_14 = lean_unsigned_to_nat(0u);
|
||||
x_15 = l_Array_umapMAux___main___at_Lean_Meta_revert___spec__3(x_14, x_13);
|
||||
x_15 = l_Array_umapMAux___main___at_Lean_Meta_revert___spec__2(x_14, x_13);
|
||||
x_16 = x_15;
|
||||
x_17 = l_List_redLength___main___rarg(x_5);
|
||||
x_18 = lean_mk_empty_array_with_capacity(x_17);
|
||||
|
|
|
|||
790
stage0/stdlib/Lean/Elab/PreDefinition/Structural.c
generated
790
stage0/stdlib/Lean/Elab/PreDefinition/Structural.c
generated
File diff suppressed because it is too large
Load diff
4
stage0/stdlib/Lean/Elab/Quotation.c
generated
4
stage0/stdlib/Lean/Elab/Quotation.c
generated
|
|
@ -342,6 +342,7 @@ lean_object* l___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_compile
|
|||
lean_object* l___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_letBindRhss___closed__11;
|
||||
lean_object* l___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_quoteSyntax(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_quoteSyntax___closed__3;
|
||||
extern lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
lean_object* l_Lean_Elab_Term_Quotation_isEscapedAntiquot___boxed(lean_object*);
|
||||
extern lean_object* l_List_head_x21___rarg___closed__2;
|
||||
uint8_t l_Array_isEmpty___rarg(lean_object*);
|
||||
|
|
@ -602,7 +603,6 @@ lean_object* l_Lean_Elab_Term_Quotation_antiquotKind_x3f(lean_object*);
|
|||
lean_object* l_List_map___main___at___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_letBindRhss___spec__1(lean_object*);
|
||||
lean_object* l_Array_back___at_Lean_Syntax_Traverser_up___spec__2(lean_object*);
|
||||
lean_object* l_List_mapM___main___at___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_compileStxMatch___spec__8___closed__1;
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
lean_object* l___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_toPreterm___lambda__4___closed__1;
|
||||
extern lean_object* l_Lean_mkAppStx___closed__2;
|
||||
lean_object* l___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_compileStxMatch___lambda__1___closed__11;
|
||||
|
|
@ -4669,7 +4669,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_mkAppStx___closed__4;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
|
|||
287
stage0/stdlib/Lean/Elab/StructInst.c
generated
287
stage0/stdlib/Lean/Elab/StructInst.c
generated
|
|
@ -20,7 +20,6 @@ lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabS
|
|||
lean_object* l_Lean_Elab_Term_StructInst_Struct_modifyFields(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_fmt___at_Lean_Position_Lean_HasFormat___spec__1(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Field_toSyntax_match__2(lean_object*);
|
||||
lean_object* l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Std_HashMap_toList___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_expandStruct___spec__6(lean_object*);
|
||||
lean_object* l_List_forM___main___at_Lean_Elab_Term_StructInst_DefaultFields_step___spec__1___lambda__2(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___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabModifyOp___closed__3;
|
||||
|
|
@ -241,7 +240,6 @@ lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getSt
|
|||
extern lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_elabAppLValsAux_loop___closed__2;
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at_Lean_Elab_Term_synthesizeInstMVarCore___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Struct_allDefault_match__2(lean_object*);
|
||||
extern lean_object* l___private_Lean_Elab_Binders_0__Lean_Elab_Term_expandMatchAltsIntoMatchAux___closed__13;
|
||||
lean_object* l_Lean_Elab_Term_tryPostponeIfNoneOrMVar(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Std_Range_myMacro____x40_Init_Data_Range___hyg_301____closed__28;
|
||||
lean_object* l_List_forM___main___at_Lean_Elab_Term_StructInst_DefaultFields_step___spec__1___lambda__1___closed__2;
|
||||
|
|
@ -292,7 +290,6 @@ lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_addMi
|
|||
lean_object* l_Lean_Elab_Term_StructInst_formatStruct(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Field_isSimple(lean_object*);
|
||||
lean_object* l_Lean_Name_append___main(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_groupFields_match__3(lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Struct_fields___boxed(lean_object*);
|
||||
lean_object* l_Lean_throwErrorAt___at_Lean_Elab_Term_StructInst_DefaultFields_propagateLoop___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -306,6 +303,7 @@ lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_findDefaultMissing_x3f(le
|
|||
lean_object* l_Lean_Elab_Term_StructInst_FieldLHS_toSyntax(uint8_t, lean_object*);
|
||||
lean_object* l_List_mapM___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_expandStruct___spec__9(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_elabTerm(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_mkLambdaFVars___at_Lean_Meta_introNCore___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_map___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_expandCompositeFields___spec__3(lean_object*);
|
||||
lean_object* l_Lean_mkAnnotation(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Struct_source_match__1(lean_object*);
|
||||
|
|
@ -416,7 +414,6 @@ lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_step_match__1___rarg(lean
|
|||
uint8_t l_Array_contains___at_Lean_findField_x3f___main___spec__1(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_tryToSynthesizeDefault_loop___closed__1;
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getForallBody(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabStruct_match__2___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_mapM___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_expandParentFields___spec__2___closed__4;
|
||||
lean_object* l_List_head_x21___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_expandStruct___spec__3___boxed(lean_object*);
|
||||
|
|
@ -428,6 +425,7 @@ extern lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_elabAppFn___clos
|
|||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_toFieldLHS_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_mkCtorHeaderAux___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_Elab_Term_StructInst_Struct_fields_match__1(lean_object*);
|
||||
lean_object* l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_step_match__3(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_isModifyOp_x3f_match__1(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_mkCtorHeaderAux___closed__2;
|
||||
|
|
@ -458,7 +456,6 @@ lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabM
|
|||
lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_findDefaultMissing_x3f___lambda__1(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_map___main___at_Lean_Elab_Term_StructInst_formatStruct___spec__1(lean_object*);
|
||||
lean_object* l_Lean_Meta_mkLambdaFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_throwFailedToElabField___rarg(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_StructInst_0__Lean_Elab_Term_StructInst_groupFields_match__3___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_findDefaultMissing_x3f_match__3(lean_object*);
|
||||
|
|
@ -498,6 +495,7 @@ extern lean_object* l_Lean_Expr_FindImpl_initCache;
|
|||
lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_reduce_match__3___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_forM___main___at_Lean_Elab_Term_StructInst_DefaultFields_step___spec__1___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* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabModifyOp___closed__4;
|
||||
extern lean_object* l_Lean_Meta_substCore___lambda__13___closed__25;
|
||||
lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_step_match__1(lean_object*);
|
||||
extern lean_object* l_Lean_Syntax_inhabited;
|
||||
size_t lean_ptr_addr(lean_object*);
|
||||
|
|
@ -512,6 +510,7 @@ lean_object* l_Array_iterateMAux___main___at___private_Lean_Elab_StructInst_0__L
|
|||
lean_object* l_Lean_Elab_Term_StructInst_expandStructInstExpectedType___boxed(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_propagateExpectedType_match__1(lean_object*);
|
||||
lean_object* l_List_foldlM___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabStruct___spec__1___closed__2;
|
||||
lean_object* l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_formatField___closed__1;
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Struct_modifyFieldsM___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_expandNumLitFields___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_mkHole(lean_object*);
|
||||
|
|
@ -556,7 +555,6 @@ lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_getFieldName(lean_object*
|
|||
lean_object* l_Array_findIdxAux___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getFieldIdx___spec__1(lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Std_Range_myMacro____x40_Init_Data_Range___hyg_530____closed__8;
|
||||
lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_findDefaultMissing_x3f_match__3___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_expandParentFields_match__3(lean_object*);
|
||||
lean_object* l_Std_HashMapImp_find_x3f___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_mkFieldMap___spec__1(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Struct_ref___boxed(lean_object*);
|
||||
|
|
@ -653,7 +651,6 @@ lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_mkCto
|
|||
lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_step(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_mkOptionalNode___closed__2;
|
||||
lean_object* l_Array_foldlStepMAux___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_isModifyOp_x3f___spec__1___closed__2;
|
||||
lean_object* l_Lean_Meta_mkLambdaFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwErrorAt___at___private_Lean_Elab_Quotation_0__Lean_Elab_Term_Quotation_getHeadInfo___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_addMissingFields_match__1(lean_object*);
|
||||
lean_object* l_List_mapM___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_mkStructView___spec__3(lean_object*);
|
||||
|
|
@ -664,6 +661,7 @@ extern lean_object* l_Lean_Meta_CheckAssignment_checkFVar___closed__1;
|
|||
lean_object* l_Lean_Elab_Term_StructInst_trySynthStructInstance_x3f___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Field_inhabited___closed__1;
|
||||
lean_object* l_List_map___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_expandParentFields___spec__1___closed__2;
|
||||
extern lean_object* l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
extern lean_object* l_Lean_Meta_CheckAssignment_checkFVar___closed__2;
|
||||
lean_object* l_List_toArrayAux___main___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_formatStruct___closed__1;
|
||||
|
|
@ -675,6 +673,7 @@ lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_expan
|
|||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_isSimpleField_x3f___boxed(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getFieldIdx___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_StructInst_0__Lean_Elab_Term_StructInst_groupFields_match__2___rarg(lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l_Lean_Expr_FindImpl_findM_x3f___main___at_Lean_Elab_Term_StructInst_DefaultFields_tryToSynthesizeDefault_loop___spec__1___boxed(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Struct_source_match__1___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_StructInst_Field_hasFormat;
|
||||
|
|
@ -3173,7 +3172,7 @@ lean_object* x_136; lean_object* x_137; lean_object* x_138; lean_object* x_139;
|
|||
lean_inc(x_1);
|
||||
x_136 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_136, 0, x_1);
|
||||
x_137 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_137 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_138 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_138, 0, x_137);
|
||||
lean_ctor_set(x_138, 1, x_136);
|
||||
|
|
@ -3213,7 +3212,7 @@ lean_object* x_163; lean_object* x_164; lean_object* x_165; lean_object* x_166;
|
|||
lean_inc(x_1);
|
||||
x_163 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_163, 0, x_1);
|
||||
x_164 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_164 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_165 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_165, 0, x_164);
|
||||
lean_ctor_set(x_165, 1, x_163);
|
||||
|
|
@ -3470,7 +3469,7 @@ lean_object* x_290; lean_object* x_291; lean_object* x_292; lean_object* x_293;
|
|||
lean_inc(x_1);
|
||||
x_290 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_290, 0, x_1);
|
||||
x_291 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_291 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_292 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_292, 0, x_291);
|
||||
lean_ctor_set(x_292, 1, x_290);
|
||||
|
|
@ -3511,7 +3510,7 @@ lean_object* x_317; lean_object* x_318; lean_object* x_319; lean_object* x_320;
|
|||
lean_inc(x_2);
|
||||
x_317 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_317, 0, x_2);
|
||||
x_318 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_318 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_319 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_319, 0, x_318);
|
||||
lean_ctor_set(x_319, 1, x_317);
|
||||
|
|
@ -3819,7 +3818,7 @@ x_26 = l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getStructNa
|
|||
x_27 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_27, 0, x_26);
|
||||
lean_ctor_set(x_27, 1, x_25);
|
||||
x_28 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_28 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_29 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_29, 0, x_27);
|
||||
lean_ctor_set(x_29, 1, x_28);
|
||||
|
|
@ -3864,7 +3863,7 @@ x_36 = l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getStructNa
|
|||
x_37 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_37, 0, x_36);
|
||||
lean_ctor_set(x_37, 1, x_35);
|
||||
x_38 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_38 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_39 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_39, 0, x_37);
|
||||
lean_ctor_set(x_39, 1, x_38);
|
||||
|
|
@ -4095,7 +4094,7 @@ x_78 = l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getStructNa
|
|||
x_79 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_79, 0, x_78);
|
||||
lean_ctor_set(x_79, 1, x_77);
|
||||
x_80 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_80 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_81 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_81, 0, x_79);
|
||||
lean_ctor_set(x_81, 1, x_80);
|
||||
|
|
@ -4140,7 +4139,7 @@ x_88 = l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getStructNa
|
|||
x_89 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_89, 0, x_88);
|
||||
lean_ctor_set(x_89, 1, x_87);
|
||||
x_90 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_90 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_91 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_91, 0, x_89);
|
||||
lean_ctor_set(x_91, 1, x_90);
|
||||
|
|
@ -4247,7 +4246,7 @@ x_106 = l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getStructN
|
|||
x_107 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_107, 0, x_106);
|
||||
lean_ctor_set(x_107, 1, x_105);
|
||||
x_108 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_108 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_109 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_109, 0, x_107);
|
||||
lean_ctor_set(x_109, 1, x_108);
|
||||
|
|
@ -4371,7 +4370,7 @@ x_130 = l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getStructN
|
|||
x_131 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_131, 0, x_130);
|
||||
lean_ctor_set(x_131, 1, x_129);
|
||||
x_132 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_132 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_133 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_133, 0, x_131);
|
||||
lean_ctor_set(x_133, 1, x_132);
|
||||
|
|
@ -4483,7 +4482,7 @@ x_148 = l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getStructN
|
|||
x_149 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_149, 0, x_148);
|
||||
lean_ctor_set(x_149, 1, x_147);
|
||||
x_150 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_150 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_151 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_151, 0, x_149);
|
||||
lean_ctor_set(x_151, 1, x_150);
|
||||
|
|
@ -5645,7 +5644,7 @@ static lean_object* _init_l_Lean_Elab_Term_StructInst_formatStruct___closed__5()
|
|||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l___private_Lean_Elab_Binders_0__Lean_Elab_Term_expandMatchAltsIntoMatchAux___closed__13;
|
||||
x_1 = l_Lean_Meta_substCore___lambda__13___closed__25;
|
||||
x_2 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
return x_2;
|
||||
|
|
@ -9207,7 +9206,7 @@ lean_dec(x_13);
|
|||
lean_dec(x_2);
|
||||
x_40 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_40, 0, x_37);
|
||||
x_41 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_41 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_42 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_42, 0, x_41);
|
||||
lean_ctor_set(x_42, 1, x_40);
|
||||
|
|
@ -10753,7 +10752,7 @@ lean_ctor_set(x_18, 0, x_1);
|
|||
x_19 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_19, 0, x_17);
|
||||
lean_ctor_set(x_19, 1, x_18);
|
||||
x_20 = l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
x_20 = l_Array_forMAux___main___at_Lean_Meta_clear___spec__5___closed__5;
|
||||
x_21 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_21, 0, x_19);
|
||||
lean_ctor_set(x_21, 1, x_20);
|
||||
|
|
@ -15808,7 +15807,7 @@ lean_ctor_set(x_19, 1, x_18);
|
|||
x_20 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_20, 0, x_19);
|
||||
lean_ctor_set(x_20, 1, x_3);
|
||||
x_21 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_21 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_22 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_22, 0, x_20);
|
||||
lean_ctor_set(x_22, 1, x_21);
|
||||
|
|
@ -17247,7 +17246,7 @@ x_217 = l_List_foldlM___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Te
|
|||
x_218 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_218, 0, x_217);
|
||||
lean_ctor_set(x_218, 1, x_216);
|
||||
x_219 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_219 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_220 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_220, 0, x_218);
|
||||
lean_ctor_set(x_220, 1, x_219);
|
||||
|
|
@ -17833,7 +17832,7 @@ x_335 = l_List_foldlM___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Te
|
|||
x_336 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_336, 0, x_335);
|
||||
lean_ctor_set(x_336, 1, x_334);
|
||||
x_337 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_337 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_338 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_338, 0, x_336);
|
||||
lean_ctor_set(x_338, 1, x_337);
|
||||
|
|
@ -18455,7 +18454,7 @@ x_458 = l_List_foldlM___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Te
|
|||
x_459 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_459, 0, x_458);
|
||||
lean_ctor_set(x_459, 1, x_457);
|
||||
x_460 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_460 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_461 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_461, 0, x_459);
|
||||
lean_ctor_set(x_461, 1, x_460);
|
||||
|
|
@ -19107,7 +19106,7 @@ x_586 = l_List_foldlM___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Te
|
|||
x_587 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_587, 0, x_586);
|
||||
lean_ctor_set(x_587, 1, x_585);
|
||||
x_588 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_588 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_589 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_589, 0, x_587);
|
||||
lean_ctor_set(x_589, 1, x_588);
|
||||
|
|
@ -19907,7 +19906,7 @@ x_743 = l_List_foldlM___main___at___private_Lean_Elab_StructInst_0__Lean_Elab_Te
|
|||
x_744 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_744, 0, x_743);
|
||||
lean_ctor_set(x_744, 1, x_742);
|
||||
x_745 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_745 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_746 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_746, 0, x_744);
|
||||
lean_ctor_set(x_746, 1, x_745);
|
||||
|
|
@ -22487,218 +22486,7 @@ return x_28;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_mkLambdaFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___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) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8;
|
||||
x_8 = l_Array_isEmpty___rarg(x_1);
|
||||
if (x_8 == 0)
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; uint8_t x_20; uint8_t x_21; lean_object* x_22;
|
||||
x_9 = lean_st_ref_get(x_4, x_7);
|
||||
x_10 = lean_ctor_get(x_9, 0);
|
||||
lean_inc(x_10);
|
||||
x_11 = lean_ctor_get(x_9, 1);
|
||||
lean_inc(x_11);
|
||||
lean_dec(x_9);
|
||||
x_12 = lean_ctor_get(x_10, 0);
|
||||
lean_inc(x_12);
|
||||
lean_dec(x_10);
|
||||
x_13 = lean_st_ref_get(x_6, x_11);
|
||||
x_14 = lean_ctor_get(x_13, 0);
|
||||
lean_inc(x_14);
|
||||
x_15 = lean_ctor_get(x_13, 1);
|
||||
lean_inc(x_15);
|
||||
lean_dec(x_13);
|
||||
x_16 = lean_ctor_get(x_14, 2);
|
||||
lean_inc(x_16);
|
||||
lean_dec(x_14);
|
||||
x_17 = lean_ctor_get(x_3, 1);
|
||||
lean_inc(x_17);
|
||||
x_18 = l_Std_HashMap_inhabited___closed__1;
|
||||
x_19 = lean_alloc_ctor(0, 3, 0);
|
||||
lean_ctor_set(x_19, 0, x_12);
|
||||
lean_ctor_set(x_19, 1, x_16);
|
||||
lean_ctor_set(x_19, 2, x_18);
|
||||
x_20 = 1;
|
||||
x_21 = 0;
|
||||
x_22 = l_Lean_MetavarContext_MkBinding_mkBinding(x_20, x_17, x_1, x_2, x_21, x_21, x_19);
|
||||
if (lean_obj_tag(x_22) == 0)
|
||||
{
|
||||
lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; uint8_t x_30;
|
||||
x_23 = lean_ctor_get(x_22, 0);
|
||||
lean_inc(x_23);
|
||||
x_24 = lean_ctor_get(x_22, 1);
|
||||
lean_inc(x_24);
|
||||
lean_dec(x_22);
|
||||
x_25 = lean_ctor_get(x_23, 0);
|
||||
lean_inc(x_25);
|
||||
lean_dec(x_23);
|
||||
x_26 = lean_ctor_get(x_24, 1);
|
||||
lean_inc(x_26);
|
||||
x_27 = lean_st_ref_take(x_6, x_15);
|
||||
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);
|
||||
x_30 = !lean_is_exclusive(x_28);
|
||||
if (x_30 == 0)
|
||||
{
|
||||
lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; uint8_t x_36;
|
||||
x_31 = lean_ctor_get(x_28, 2);
|
||||
lean_dec(x_31);
|
||||
lean_ctor_set(x_28, 2, x_26);
|
||||
x_32 = lean_st_ref_set(x_6, x_28, x_29);
|
||||
x_33 = lean_ctor_get(x_32, 1);
|
||||
lean_inc(x_33);
|
||||
lean_dec(x_32);
|
||||
x_34 = lean_ctor_get(x_24, 0);
|
||||
lean_inc(x_34);
|
||||
lean_dec(x_24);
|
||||
x_35 = l_Lean_Meta_setMCtx___at___private_Lean_Meta_Basic_6__liftMkBindingM___spec__1(x_34, x_3, x_4, x_5, x_6, x_33);
|
||||
lean_dec(x_3);
|
||||
x_36 = !lean_is_exclusive(x_35);
|
||||
if (x_36 == 0)
|
||||
{
|
||||
lean_object* x_37;
|
||||
x_37 = lean_ctor_get(x_35, 0);
|
||||
lean_dec(x_37);
|
||||
lean_ctor_set(x_35, 0, x_25);
|
||||
return x_35;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_38; lean_object* x_39;
|
||||
x_38 = lean_ctor_get(x_35, 1);
|
||||
lean_inc(x_38);
|
||||
lean_dec(x_35);
|
||||
x_39 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_39, 0, x_25);
|
||||
lean_ctor_set(x_39, 1, x_38);
|
||||
return x_39;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50;
|
||||
x_40 = lean_ctor_get(x_28, 0);
|
||||
x_41 = lean_ctor_get(x_28, 1);
|
||||
x_42 = lean_ctor_get(x_28, 3);
|
||||
lean_inc(x_42);
|
||||
lean_inc(x_41);
|
||||
lean_inc(x_40);
|
||||
lean_dec(x_28);
|
||||
x_43 = lean_alloc_ctor(0, 4, 0);
|
||||
lean_ctor_set(x_43, 0, x_40);
|
||||
lean_ctor_set(x_43, 1, x_41);
|
||||
lean_ctor_set(x_43, 2, x_26);
|
||||
lean_ctor_set(x_43, 3, x_42);
|
||||
x_44 = lean_st_ref_set(x_6, x_43, x_29);
|
||||
x_45 = lean_ctor_get(x_44, 1);
|
||||
lean_inc(x_45);
|
||||
lean_dec(x_44);
|
||||
x_46 = lean_ctor_get(x_24, 0);
|
||||
lean_inc(x_46);
|
||||
lean_dec(x_24);
|
||||
x_47 = l_Lean_Meta_setMCtx___at___private_Lean_Meta_Basic_6__liftMkBindingM___spec__1(x_46, x_3, x_4, x_5, x_6, x_45);
|
||||
lean_dec(x_3);
|
||||
x_48 = lean_ctor_get(x_47, 1);
|
||||
lean_inc(x_48);
|
||||
if (lean_is_exclusive(x_47)) {
|
||||
lean_ctor_release(x_47, 0);
|
||||
lean_ctor_release(x_47, 1);
|
||||
x_49 = x_47;
|
||||
} else {
|
||||
lean_dec_ref(x_47);
|
||||
x_49 = lean_box(0);
|
||||
}
|
||||
if (lean_is_scalar(x_49)) {
|
||||
x_50 = lean_alloc_ctor(0, 2, 0);
|
||||
} else {
|
||||
x_50 = x_49;
|
||||
}
|
||||
lean_ctor_set(x_50, 0, x_25);
|
||||
lean_ctor_set(x_50, 1, x_48);
|
||||
return x_50;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; uint8_t x_59;
|
||||
x_51 = lean_ctor_get(x_22, 1);
|
||||
lean_inc(x_51);
|
||||
lean_dec(x_22);
|
||||
x_52 = lean_ctor_get(x_51, 0);
|
||||
lean_inc(x_52);
|
||||
x_53 = l_Lean_Meta_setMCtx___at___private_Lean_Meta_Basic_6__liftMkBindingM___spec__1(x_52, x_3, x_4, x_5, x_6, x_15);
|
||||
x_54 = lean_ctor_get(x_53, 1);
|
||||
lean_inc(x_54);
|
||||
lean_dec(x_53);
|
||||
x_55 = lean_ctor_get(x_51, 1);
|
||||
lean_inc(x_55);
|
||||
lean_dec(x_51);
|
||||
x_56 = lean_st_ref_take(x_6, x_54);
|
||||
x_57 = lean_ctor_get(x_56, 0);
|
||||
lean_inc(x_57);
|
||||
x_58 = lean_ctor_get(x_56, 1);
|
||||
lean_inc(x_58);
|
||||
lean_dec(x_56);
|
||||
x_59 = !lean_is_exclusive(x_57);
|
||||
if (x_59 == 0)
|
||||
{
|
||||
lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64;
|
||||
x_60 = lean_ctor_get(x_57, 2);
|
||||
lean_dec(x_60);
|
||||
lean_ctor_set(x_57, 2, x_55);
|
||||
x_61 = lean_st_ref_set(x_6, x_57, x_58);
|
||||
x_62 = lean_ctor_get(x_61, 1);
|
||||
lean_inc(x_62);
|
||||
lean_dec(x_61);
|
||||
x_63 = l___private_Lean_Meta_Basic_6__liftMkBindingM___rarg___closed__3;
|
||||
x_64 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_63, x_3, x_4, x_5, x_6, x_62);
|
||||
lean_dec(x_3);
|
||||
return x_64;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72;
|
||||
x_65 = lean_ctor_get(x_57, 0);
|
||||
x_66 = lean_ctor_get(x_57, 1);
|
||||
x_67 = lean_ctor_get(x_57, 3);
|
||||
lean_inc(x_67);
|
||||
lean_inc(x_66);
|
||||
lean_inc(x_65);
|
||||
lean_dec(x_57);
|
||||
x_68 = lean_alloc_ctor(0, 4, 0);
|
||||
lean_ctor_set(x_68, 0, x_65);
|
||||
lean_ctor_set(x_68, 1, x_66);
|
||||
lean_ctor_set(x_68, 2, x_55);
|
||||
lean_ctor_set(x_68, 3, x_67);
|
||||
x_69 = lean_st_ref_set(x_6, x_68, x_58);
|
||||
x_70 = lean_ctor_get(x_69, 1);
|
||||
lean_inc(x_70);
|
||||
lean_dec(x_69);
|
||||
x_71 = l___private_Lean_Meta_Basic_6__liftMkBindingM___rarg___closed__3;
|
||||
x_72 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_71, x_3, x_4, x_5, x_6, x_70);
|
||||
lean_dec(x_3);
|
||||
return x_72;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_73;
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_1);
|
||||
x_73 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_73, 0, x_2);
|
||||
lean_ctor_set(x_73, 1, x_7);
|
||||
return x_73;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__4(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* l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___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) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8;
|
||||
|
|
@ -22925,7 +22713,7 @@ lean_inc(x_10);
|
|||
x_11 = lean_ctor_get(x_9, 1);
|
||||
lean_inc(x_11);
|
||||
lean_dec(x_9);
|
||||
x_12 = l_Lean_Meta_mkLambdaFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__3(x_2, x_10, x_4, x_5, x_6, x_7, x_11);
|
||||
x_12 = l_Lean_Meta_mkLambdaFVars___at_Lean_Meta_introNCore___spec__2(x_2, x_10, x_4, x_5, x_6, x_7, x_11);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
|
|
@ -22977,7 +22765,7 @@ lean_inc(x_10);
|
|||
x_11 = lean_ctor_get(x_9, 1);
|
||||
lean_inc(x_11);
|
||||
lean_dec(x_9);
|
||||
x_12 = l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__4(x_2, x_10, x_4, x_5, x_6, x_7, x_11);
|
||||
x_12 = l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__3(x_2, x_10, x_4, x_5, x_6, x_7, x_11);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
|
|
@ -23598,22 +23386,11 @@ lean_dec(x_2);
|
|||
return x_7;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_mkLambdaFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___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* l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8;
|
||||
x_8 = l_Lean_Meta_mkLambdaFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__4___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8;
|
||||
x_8 = l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
x_8 = l_Lean_Meta_mkForallFVars___at_Lean_Elab_Term_StructInst_DefaultFields_reduce___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
|
|
@ -26506,7 +26283,7 @@ lean_inc(x_20);
|
|||
x_42 = l_Lean_Elab_Term_StructInst_formatStruct(x_20);
|
||||
x_43 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_43, 0, x_42);
|
||||
x_44 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_44 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_45 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_45, 0, x_44);
|
||||
lean_ctor_set(x_45, 1, x_43);
|
||||
|
|
|
|||
6
stage0/stdlib/Lean/Elab/Syntax.c
generated
6
stage0/stdlib/Lean/Elab/Syntax.c
generated
|
|
@ -44,6 +44,7 @@ lean_object* l_Lean_Elab_Command_elabSyntaxAbbrev___closed__3;
|
|||
lean_object* l___private_Lean_Elab_Syntax_0__Lean_Elab_Command_elabKindPrio___closed__9;
|
||||
lean_object* l_Lean_Elab_Term_toParserDescrAux___closed__156;
|
||||
lean_object* l_Lean_Elab_Term_toParserDescrAux___closed__127;
|
||||
extern lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Intro___hyg_534____closed__2;
|
||||
lean_object* l___private_Lean_Elab_Syntax_0__Lean_Elab_Command_declareSyntaxCatQuotParser___closed__34;
|
||||
lean_object* l_Lean_resolveGlobalConst___at_Lean_Elab_Term_toParserDescrAux___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_Lean_Elab_Command_elabMacroRulesAux___closed__22;
|
||||
|
|
@ -780,7 +781,6 @@ extern lean_object* l_Lean_Meta_DiscrTree_Trie_format___main___rarg___closed__1;
|
|||
lean_object* l_Lean_Elab_Term_expandOptPrecedence_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Command_elabMacroRules___closed__1;
|
||||
lean_object* l_Lean_Elab_Command_mkFreshKind(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_registerHygienicIntro___closed__2;
|
||||
lean_object* l_Lean_Elab_Command_mkKind(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_System_FilePath_dirName___closed__1;
|
||||
lean_object* l___private_Lean_Elab_Syntax_0__Lean_Elab_Command_antiquote_match__2___rarg(lean_object*, lean_object*);
|
||||
|
|
@ -20305,7 +20305,7 @@ static lean_object* _init_l_Lean_Elab_Command_expandElab___closed__2() {
|
|||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Meta_registerHygienicIntro___closed__2;
|
||||
x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Intro___hyg_534____closed__2;
|
||||
x_2 = lean_string_utf8_byte_size(x_1);
|
||||
return x_2;
|
||||
}
|
||||
|
|
@ -20314,7 +20314,7 @@ static lean_object* _init_l_Lean_Elab_Command_expandElab___closed__3() {
|
|||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4;
|
||||
x_1 = l_Lean_Meta_registerHygienicIntro___closed__2;
|
||||
x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Intro___hyg_534____closed__2;
|
||||
x_2 = lean_unsigned_to_nat(0u);
|
||||
x_3 = l_Lean_Elab_Command_expandElab___closed__2;
|
||||
x_4 = lean_alloc_ctor(0, 3, 0);
|
||||
|
|
|
|||
10
stage0/stdlib/Lean/Elab/SyntheticMVars.c
generated
10
stage0/stdlib/Lean/Elab/SyntheticMVars.c
generated
|
|
@ -83,7 +83,6 @@ lean_object* lean_st_ref_take(lean_object*, lean_object*);
|
|||
lean_object* l___private_Lean_Elab_SyntheticMVars_0__Lean_Elab_Term_synthesizeSyntheticMVarsStep___closed__8;
|
||||
lean_object* l_List_forInAux___main___at___private_Lean_Elab_SyntheticMVars_0__Lean_Elab_Term_reportStuckSyntheticMVars___spec__1___lambda__1___closed__1;
|
||||
lean_object* l_Lean_Elab_logException___at___private_Lean_Elab_Term_0__Lean_Elab_Term_exceptionToSorry___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l___private_Lean_Elab_SyntheticMVars_0__Lean_Elab_Term_resumePostponed___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_forInAux___main___at___private_Lean_Elab_SyntheticMVars_0__Lean_Elab_Term_reportStuckSyntheticMVars___spec__1___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_SyntheticMVars_0__Lean_Elab_Term_reportStuckSyntheticMVars_match__1(lean_object*);
|
||||
|
|
@ -178,6 +177,7 @@ uint8_t l___private_Lean_Elab_SyntheticMVars_0__Lean_Elab_Term_getSomeSynthethic
|
|||
lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_runTactic___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_List_isEmpty___rarg(lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l_Lean_addTrace___at___private_Lean_Elab_Term_0__Lean_Elab_Term_postponeElabTerm___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_forInAux___main___at___private_Lean_Elab_SyntheticMVars_0__Lean_Elab_Term_reportStuckSyntheticMVars___spec__1___closed__3;
|
||||
lean_object* l_Lean_indentExpr(lean_object*);
|
||||
|
|
@ -766,7 +766,7 @@ x_17 = l_Lean_Elab_Term_ensureAssignmentHasNoMVars___closed__2;
|
|||
x_18 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_17);
|
||||
lean_ctor_set(x_18, 1, x_16);
|
||||
x_19 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_19 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_20 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_20, 0, x_18);
|
||||
lean_ctor_set(x_20, 1, x_19);
|
||||
|
|
@ -802,7 +802,7 @@ x_28 = l_Lean_Elab_Term_ensureAssignmentHasNoMVars___closed__2;
|
|||
x_29 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_29, 0, x_28);
|
||||
lean_ctor_set(x_29, 1, x_27);
|
||||
x_30 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_30 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_31 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_31, 0, x_29);
|
||||
lean_ctor_set(x_31, 1, x_30);
|
||||
|
|
@ -3121,7 +3121,7 @@ x_64 = l_List_filterAuxM___main___at___private_Lean_Elab_SyntheticMVars_0__Lean_
|
|||
x_65 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_65, 0, x_64);
|
||||
lean_ctor_set(x_65, 1, x_63);
|
||||
x_66 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_66 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_67 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_67, 0, x_65);
|
||||
lean_ctor_set(x_67, 1, x_66);
|
||||
|
|
@ -3934,7 +3934,7 @@ x_22 = l_Lean_indentExpr(x_1);
|
|||
x_23 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_23, 0, x_21);
|
||||
lean_ctor_set(x_23, 1, x_22);
|
||||
x_24 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_24 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_25 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_23);
|
||||
lean_ctor_set(x_25, 1, x_24);
|
||||
|
|
|
|||
66
stage0/stdlib/Lean/Elab/Tactic/Basic.c
generated
66
stage0/stdlib/Lean/Elab/Tactic/Basic.c
generated
|
|
@ -18,9 +18,9 @@ lean_object* l___regBuiltin_Lean_Elab_Tactic_evalAssumption___closed__2;
|
|||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalTacticSeq___closed__2;
|
||||
lean_object* l_Array_foldlStepMAux___main___at_Lean_Elab_Tactic_evalSeq1___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalDone___closed__3;
|
||||
extern lean_object* l_Lean_Meta_revert___lambda__2___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_getMainTag___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalAssumption___rarg___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_expandTacticMacroFns_loop___closed__1;
|
||||
size_t l_USize_add(size_t, size_t);
|
||||
lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_expandTacticMacroFns_loop___spec__3___rarg(lean_object*);
|
||||
extern lean_object* l___private_Lean_Elab_Binders_0__Lean_Elab_Term_expandMatchAltsIntoMatchAux___closed__7;
|
||||
|
|
@ -31,6 +31,7 @@ lean_object* l_Lean_Elab_Tactic_getMainTag(lean_object*, lean_object*, lean_obje
|
|||
lean_object* l_Lean_stringToMessageData(lean_object*);
|
||||
lean_object* l_Lean_throwErrorAt___at_Lean_Elab_Tactic_expandTacticMacroFns_loop___spec__1___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_mkTacticAttribute___closed__5;
|
||||
extern lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Intro___hyg_534____closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_withMainMVarContext___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalIntro_match__1___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_mkTacticAttribute___closed__3;
|
||||
|
|
@ -139,7 +140,6 @@ lean_object* l_Lean_Elab_Tactic_liftMetaMAtMain_match__1___rarg(lean_object*, le
|
|||
lean_object* l_Lean_Elab_Tactic_getGoals___boxed(lean_object*);
|
||||
extern lean_object* l_Lean_Name_inhabited;
|
||||
lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Tactic_evalClear___spec__1(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__1;
|
||||
extern lean_object* l_String_splitAux___main___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_evalDone___rarg(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_Basic_0__Lean_Elab_Tactic_sortFVarIds___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -155,6 +155,7 @@ lean_object* l_Lean_Elab_Tactic_hasOrElse(lean_object*);
|
|||
lean_object* l_Lean_Elab_Tactic_orelse(lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalTraceState___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_getCurrMacroScope___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__2;
|
||||
lean_object* l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_getMainModule___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_done___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -170,7 +171,6 @@ lean_object* l_Lean_Elab_Tactic_evalRevert_match__1(lean_object*);
|
|||
lean_object* l_Lean_Elab_Tactic_evalClear_match__1___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalTactic_match__2(lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalAssumption___rarg___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_substCore___lambda__5___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_liftMetaTacticAux___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_liftMetaTacticAux___rarg___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_nat_add(lean_object*, lean_object*);
|
||||
|
|
@ -193,6 +193,7 @@ lean_object* l_Lean_Elab_Tactic_focusAux_match__1(lean_object*);
|
|||
lean_object* l_Lean_Elab_Tactic_try_x3f___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_instantiateMVars___at_Lean_Elab_Tactic_evalIntros___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_findM_x3f___main___at___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_findTag_x3f___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_clear___lambda__3___closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_ensureHasNoMVars___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_TacticM_run_x27(lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalDone___closed__1;
|
||||
|
|
@ -239,7 +240,6 @@ lean_object* l_List_forInAux___main___at_Lean_Elab_Tactic_tagUntaggedGoals___spe
|
|||
lean_object* l___private_Init_Data_Array_QSort_1__qpartitionAux___main___at___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_sortFVarIds___spec__12(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Name_append___main(lean_object*, lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalTacticSeq(lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_evalTacticUsing_loop_match__3___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_TacticM_run(lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalFailIfSuccess(lean_object*);
|
||||
|
|
@ -312,7 +312,6 @@ lean_object* l_Lean_Elab_Tactic_evalSeq1(lean_object*, lean_object*, lean_object
|
|||
lean_object* l_Lean_Elab_Tactic_getMainModule___rarg___boxed(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_throwUnknownConstant___rarg___closed__5;
|
||||
lean_object* l_Lean_Elab_Tactic_evalTacticSeq___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_clear___lambda__1___closed__4;
|
||||
lean_object* l_Lean_Elab_Tactic_getMainGoal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_SavedState_inhabited___closed__1;
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalSubst(lean_object*);
|
||||
|
|
@ -333,6 +332,7 @@ extern lean_object* l_Lean_mkSimpleThunk___closed__1;
|
|||
lean_object* l_Lean_FileMap_toPosition(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_introStep___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_qsortAux___main___at___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_sortFVarIds___spec__1(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
lean_object* l___private_Init_Data_Array_QSort_1__qpartitionAux___main___at___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_sortFVarIds___spec__9(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_initFn____x40_Lean_Elab_Util___hyg_907____closed__2;
|
||||
lean_object* l___private_Init_Data_Array_QSort_1__qpartitionAux___main___at___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_sortFVarIds___spec__10(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -352,6 +352,7 @@ lean_object* l_Lean_Elab_Term_reportUnsolvedGoals___closed__1;
|
|||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalOrelse___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_evalTactic___closed__1;
|
||||
lean_object* l_Array_iterateMAux___main___at_Array_append___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_substCore___lambda__13___closed__1;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_sortFVarIds___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Init_Data_Array_QSort_1__qpartitionAux___main___at___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_sortFVarIds___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
size_t lean_usize_of_nat(lean_object*);
|
||||
|
|
@ -388,7 +389,6 @@ lean_object* l_Lean_Elab_Tactic_tagUntaggedGoals_match__1(lean_object*);
|
|||
lean_object* l___private_Init_Data_Array_QSort_1__qpartitionAux___main___at___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_sortFVarIds___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Tactic_evalClear___spec__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_instantiateMVars___at_Lean_Elab_Tactic_ensureHasNoMVars___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_revert___lambda__1___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_evalIntros___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Tactic_evalClear___spec__1___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalIntros___closed__2;
|
||||
|
|
@ -551,7 +551,6 @@ lean_object* l_Lean_Elab_Tactic_evalIntro___lambda__1___boxed(lean_object*, lean
|
|||
extern lean_object* l_Lean_Elab_mkMacroAttributeUnsafe___closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_withMacroExpansion(lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_getMainTag_match__1___rarg(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_registerHygienicIntro___closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_evalIntro_match__1(lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalTactic_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_unsafeCast(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -560,13 +559,13 @@ lean_object* l___regBuiltin_Lean_Elab_Tactic_evalOrelse(lean_object*);
|
|||
lean_object* l_Lean_Elab_Tactic_expandTacticMacroFns_loop(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___regBuiltin_Lean_Elab_Tactic_evalTraceState___closed__3;
|
||||
lean_object* lean_local_ctx_find(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalSkip___closed__3;
|
||||
lean_object* l_Lean_Elab_Tactic_focus___rarg___closed__1;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_evalTacticUsing_loop_match__3(lean_object*);
|
||||
lean_object* l_Lean_Meta_setMCtx___at_Lean_Elab_Tactic_BacktrackableState_restore___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_usize_to_nat(size_t);
|
||||
lean_object* l_Lean_Elab_Tactic_orelse___rarg(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_Elab_Tactic_getFVarId___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_getCurrMacroScope(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalChoiceAux___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Elab_Tactic_getFVarIds___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -574,7 +573,6 @@ lean_object* l_Lean_Elab_Tactic_getMainModule(lean_object*, lean_object*, lean_o
|
|||
lean_object* l_List_findM_x3f___main___at___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_findTag_x3f___spec__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* l_Lean_Elab_Tactic_evalIntros_match__1___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_indentExpr(lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_getMainModule___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_getFVarId___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Tactic_evalClear___spec__1___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -716,7 +714,7 @@ x_10 = l_Lean_Elab_Term_reportUnsolvedGoals___closed__2;
|
|||
x_11 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_11, 0, x_10);
|
||||
lean_ctor_set(x_11, 1, x_9);
|
||||
x_12 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_12 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_13 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_13, 0, x_11);
|
||||
lean_ctor_set(x_13, 1, x_12);
|
||||
|
|
@ -1700,7 +1698,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_Elab_mkMacroAttributeUnsafe___closed__2;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
@ -1746,7 +1744,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = lean_box(0);
|
||||
x_2 = l_Lean_Meta_registerHygienicIntro___closed__2;
|
||||
x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Intro___hyg_534____closed__2;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
@ -1756,7 +1754,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_Elab_Tactic_mkTacticAttribute___closed__1;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
@ -1770,7 +1768,7 @@ x_3 = l_Lean_Elab_Tactic_mkTacticAttribute___closed__5;
|
|||
x_4 = l_Lean_Elab_Tactic_mkTacticAttribute___closed__6;
|
||||
x_5 = l___regBuiltin_Lean_Elab_Term_Quotation_elabTacticQuot___closed__1;
|
||||
x_6 = l_Lean_Elab_Tactic_mkTacticAttribute___closed__7;
|
||||
x_7 = l_Lean_Meta_registerHygienicIntro___closed__2;
|
||||
x_7 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Intro___hyg_534____closed__2;
|
||||
x_8 = l_Lean_Elab_mkElabAttribute___rarg(x_2, x_3, x_4, x_5, x_6, x_7, x_1);
|
||||
return x_8;
|
||||
}
|
||||
|
|
@ -2000,7 +1998,7 @@ x_15 = l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_evalTacticUsing_lo
|
|||
x_16 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_16, 0, x_15);
|
||||
lean_ctor_set(x_16, 1, x_14);
|
||||
x_17 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_17 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_18 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_16);
|
||||
lean_ctor_set(x_18, 1, x_17);
|
||||
|
|
@ -2563,15 +2561,6 @@ x_13 = l_Lean_Elab_Tactic_expandTacticMacroFns_loop(x_1, x_2, x_4, x_5, x_6, x_7
|
|||
return x_13;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Tactic_expandTacticMacroFns_loop___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Meta_throwTacticEx___rarg___closed__1;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Elab_Tactic_expandTacticMacroFns_loop(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) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -2582,7 +2571,7 @@ lean_inc(x_1);
|
|||
x_12 = l_Lean_Syntax_getKind(x_1);
|
||||
x_13 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_13, 0, x_12);
|
||||
x_14 = l_Lean_Elab_Tactic_expandTacticMacroFns_loop___closed__1;
|
||||
x_14 = l_Lean_Meta_throwTacticEx___rarg___closed__2;
|
||||
x_15 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_15, 0, x_14);
|
||||
lean_ctor_set(x_15, 1, x_13);
|
||||
|
|
@ -5752,7 +5741,7 @@ x_24 = l_Lean_Elab_Tactic_ensureHasNoMVars___closed__2;
|
|||
x_25 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_24);
|
||||
lean_ctor_set(x_25, 1, x_23);
|
||||
x_26 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_26 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_27 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_27, 0, x_25);
|
||||
lean_ctor_set(x_27, 1, x_26);
|
||||
|
|
@ -5785,7 +5774,7 @@ x_34 = l_Lean_Elab_Tactic_ensureHasNoMVars___closed__2;
|
|||
x_35 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_35, 0, x_34);
|
||||
lean_ctor_set(x_35, 1, x_33);
|
||||
x_36 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_36 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_37 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_37, 0, x_35);
|
||||
lean_ctor_set(x_37, 1, x_36);
|
||||
|
|
@ -11015,15 +11004,6 @@ x_2 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_getFVarId_match__1___rarg),
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Tactic_getFVarId___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Meta_clear___lambda__1___closed__4;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Elab_Tactic_getFVarId(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:
|
||||
{
|
||||
|
|
@ -11053,7 +11033,7 @@ x_18 = l_Lean_Syntax_getId(x_1);
|
|||
lean_dec(x_1);
|
||||
x_19 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_19, 0, x_18);
|
||||
x_20 = l_Lean_Elab_Tactic_getFVarId___closed__1;
|
||||
x_20 = l_Lean_Meta_clear___lambda__3___closed__2;
|
||||
x_21 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_21, 0, x_20);
|
||||
lean_ctor_set(x_21, 1, x_19);
|
||||
|
|
@ -11140,7 +11120,7 @@ x_43 = l_Lean_Syntax_getId(x_1);
|
|||
lean_dec(x_1);
|
||||
x_44 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_44, 0, x_43);
|
||||
x_45 = l_Lean_Elab_Tactic_getFVarId___closed__1;
|
||||
x_45 = l_Lean_Meta_clear___lambda__3___closed__2;
|
||||
x_46 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_46, 0, x_45);
|
||||
lean_ctor_set(x_46, 1, x_44);
|
||||
|
|
@ -11351,7 +11331,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l___regBuiltin_Lean_Elab_Term_Quotation_elabTacticQuot___closed__1;
|
||||
x_2 = l_Lean_Meta_revert___lambda__1___closed__1;
|
||||
x_2 = l_Lean_Meta_revert___lambda__2___closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
@ -14670,7 +14650,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l___regBuiltin_Lean_Elab_Term_Quotation_elabTacticQuot___closed__1;
|
||||
x_2 = l_Lean_Meta_substCore___lambda__5___closed__1;
|
||||
x_2 = l_Lean_Meta_substCore___lambda__13___closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
@ -15797,7 +15777,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_Elab_initFn____x40_Lean_Elab_Util___hyg_907____closed__1;
|
||||
x_2 = l_Lean_Meta_registerHygienicIntro___closed__2;
|
||||
x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Intro___hyg_534____closed__2;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
@ -16107,8 +16087,6 @@ l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_evalTacticUsing_loop___cl
|
|||
lean_mark_persistent(l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_evalTacticUsing_loop___closed__1);
|
||||
l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_evalTacticUsing_loop___closed__2 = _init_l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_evalTacticUsing_loop___closed__2();
|
||||
lean_mark_persistent(l___private_Lean_Elab_Tactic_Basic_0__Lean_Elab_Tactic_evalTacticUsing_loop___closed__2);
|
||||
l_Lean_Elab_Tactic_expandTacticMacroFns_loop___closed__1 = _init_l_Lean_Elab_Tactic_expandTacticMacroFns_loop___closed__1();
|
||||
lean_mark_persistent(l_Lean_Elab_Tactic_expandTacticMacroFns_loop___closed__1);
|
||||
l_Lean_Elab_Tactic_evalTactic___closed__1 = _init_l_Lean_Elab_Tactic_evalTactic___closed__1();
|
||||
lean_mark_persistent(l_Lean_Elab_Tactic_evalTactic___closed__1);
|
||||
l_Lean_Elab_Tactic_evalTactic___closed__2 = _init_l_Lean_Elab_Tactic_evalTactic___closed__2();
|
||||
|
|
@ -16274,8 +16252,6 @@ lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_evalIntros___closed__1);
|
|||
res = l___regBuiltin_Lean_Elab_Tactic_evalIntros(lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
l_Lean_Elab_Tactic_getFVarId___closed__1 = _init_l_Lean_Elab_Tactic_getFVarId___closed__1();
|
||||
lean_mark_persistent(l_Lean_Elab_Tactic_getFVarId___closed__1);
|
||||
l_Lean_Elab_Tactic_evalRevert___closed__1 = _init_l_Lean_Elab_Tactic_evalRevert___closed__1();
|
||||
lean_mark_persistent(l_Lean_Elab_Tactic_evalRevert___closed__1);
|
||||
l___regBuiltin_Lean_Elab_Tactic_evalRevert___closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_evalRevert___closed__1();
|
||||
|
|
|
|||
6
stage0/stdlib/Lean/Elab/Tactic/Binders.c
generated
6
stage0/stdlib/Lean/Elab/Tactic/Binders.c
generated
|
|
@ -52,6 +52,7 @@ lean_object* l___private_Lean_Elab_Tactic_Binders_0__Lean_Elab_Tactic_liftTermBi
|
|||
lean_object* l___regBuiltin_Lean_Elab_Tactic_expandHaveTactic___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_expandSufficesTactic___boxed(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_expandShowTactic___closed__8;
|
||||
extern lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
extern lean_object* l_Lean_Parser_Error_toString___closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_expandHaveTactic___boxed(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_expandShowTactic(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -86,7 +87,6 @@ lean_object* l___regBuiltin_Lean_Elab_Tactic_expandSufficesTactic(lean_object*);
|
|||
extern lean_object* l___regBuiltin_Lean_Elab_Term_elabSyntheticHole___closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_expandShowTactic___closed__4;
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_expandLetBangTactic(lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_expandShowTactic___closed__9;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Binders_0__Lean_Elab_Tactic_liftTermBinderSyntax___closed__6;
|
||||
lean_object* l_Lean_Elab_Tactic_expandShowTactic___closed__2;
|
||||
|
|
@ -113,7 +113,7 @@ x_8 = lean_ctor_get(x_4, 1);
|
|||
lean_inc(x_8);
|
||||
x_9 = lean_ctor_get_usize(x_4, 2);
|
||||
lean_dec(x_4);
|
||||
x_10 = l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
x_10 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
x_11 = lean_string_dec_eq(x_8, x_10);
|
||||
lean_dec(x_8);
|
||||
if (x_11 == 0)
|
||||
|
|
@ -276,7 +276,7 @@ lean_inc(x_7);
|
|||
x_8 = lean_ctor_get(x_5, 1);
|
||||
lean_inc(x_8);
|
||||
lean_dec(x_5);
|
||||
x_9 = l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
x_9 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
x_10 = lean_string_dec_eq(x_8, x_9);
|
||||
lean_dec(x_8);
|
||||
if (x_10 == 0)
|
||||
|
|
|
|||
4
stage0/stdlib/Lean/Elab/Tactic/ElabTerm.c
generated
4
stage0/stdlib/Lean/Elab/Tactic/ElabTerm.c
generated
|
|
@ -80,6 +80,7 @@ extern lean_object* l_Lean_Meta_admit___closed__1;
|
|||
lean_object* l___regBuiltin_Lean_Elab_Tactic_expandAdmit___closed__1;
|
||||
lean_object* l_Lean_Elab_Tactic_expandAdmit___boxed(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_elabAsFVar_match__1(lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Apply_0__Lean_Meta_throwApplyError___rarg___closed__1;
|
||||
lean_object* l_Lean_Meta_getMVarsNoDelayedImp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_ReaderT_bind___at_Lean_Elab_Term_monadLog___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalApply___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -136,7 +137,6 @@ lean_object* l_Lean_Elab_Tactic_elabTermWithHoles___lambda__1___boxed(lean_objec
|
|||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalRefine___closed__1;
|
||||
lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_refineCore___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*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Apply_3__throwApplyError___rarg___closed__1;
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalRefine(lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_elabTermWithHoles___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_expandAdmit___rarg___closed__7;
|
||||
|
|
@ -2091,7 +2091,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l___regBuiltin_Lean_Elab_Term_Quotation_elabTacticQuot___closed__1;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Apply_3__throwApplyError___rarg___closed__1;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Apply_0__Lean_Meta_throwApplyError___rarg___closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
|
|||
351
stage0/stdlib/Lean/Elab/Tactic/Generalize.c
generated
351
stage0/stdlib/Lean/Elab/Tactic/Generalize.c
generated
|
|
@ -20,43 +20,32 @@ lean_object* l_Lean_Expr_mvarId_x21(lean_object*);
|
|||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___lambda__1___closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_evalGeneralizeAux_match__1(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_withIncRecDepth___rarg___lambda__2___closed__2;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___lambda__1___closed__1;
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at_Lean_Meta_admit___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq_match__1(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___lambda__1___closed__3;
|
||||
lean_object* l_Lean_Elab_Tactic_evalGeneralizeAux___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_mkMVar(lean_object*);
|
||||
extern lean_object* l___regBuiltin_Lean_Elab_Term_Quotation_elabTacticQuot___closed__1;
|
||||
lean_object* l_Lean_Meta_getMVarTag(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_st_ref_get(lean_object*, lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_AppBuilder_5__mkEqReflImp___closed__2;
|
||||
lean_object* l_ReaderT_lift___rarg___boxed(lean_object*, lean_object*);
|
||||
lean_object* lean_expr_lift_loose_bvars(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_InferType_4__getLevelImp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_getVarName___boxed(lean_object*);
|
||||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__2___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_Lean_AddMessageContext___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFallback___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* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize_match__1___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_intro1Core(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_getAuxHypothesisName___boxed(lean_object*);
|
||||
lean_object* lean_st_ref_take(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__2(lean_object*);
|
||||
extern lean_object* l_Lean_Meta_inferTypeRef;
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at_Lean_Meta_getMVarTag___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Syntax_getId(lean_object*);
|
||||
lean_object* lean_name_mk_string(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_generalize(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalGeneralizeAux___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* l_Lean_MetavarContext_assignExpr(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFallback___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_throwUnknownConstant___rarg___closed__5;
|
||||
lean_object* l_Lean_Elab_Tactic_getMainGoal(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_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___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* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFallback(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -64,30 +53,24 @@ lean_object* l_Lean_Elab_Tactic_evalGeneralize___boxed(lean_object*, lean_object
|
|||
lean_object* l_Lean_Meta_introNCore(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalGeneralize(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Tactic_tacticElabAttribute;
|
||||
lean_object* l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize_match__1(lean_object*);
|
||||
lean_object* l_Lean_Meta_inferType___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalGeneralizeAux(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_assertExt___lambda__1___closed__1;
|
||||
extern lean_object* l_Lean_Meta_getMVarDecl___rarg___lambda__1___closed__3;
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalGeneralize(lean_object*);
|
||||
lean_object* l_ReaderT_bind___at_Lean_Elab_Tactic_liftMetaTacticAux___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_generalize___closed__1;
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Elab_Tactic_withMainMVarContext___spec__1___rarg(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_metavar_ctx_find_decl(lean_object*, lean_object*);
|
||||
lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_mkForall(lean_object*, uint8_t, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_elabTerm(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_Lean_Syntax_isNone(lean_object*);
|
||||
lean_object* l_Lean_Meta_getLevel___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq_match__1___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_inferType___at_Lean_Meta_synthAppInstances___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalGeneralizeAux_match__1___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalGeneralize___closed__1;
|
||||
lean_object* l_Lean_Meta_mkFreshExprSyntheticOpaqueMVar(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalGeneralizeAux_match__2(lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalGeneralize___closed__2;
|
||||
lean_object* l_Lean_mkAppB(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -98,6 +81,7 @@ lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_getAuxH
|
|||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq_match__2(lean_object*);
|
||||
lean_object* l_Lean_mkApp3(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_getVarName(lean_object*);
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_getAuxHypothesisName(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -176,193 +160,6 @@ x_2 = lean_alloc_closure((void*)(l___private_Lean_Elab_Tactic_Generalize_0__Lean
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_inferType___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; uint8_t x_11;
|
||||
x_7 = lean_ctor_get(x_4, 0);
|
||||
lean_inc(x_7);
|
||||
x_8 = lean_ctor_get(x_4, 1);
|
||||
lean_inc(x_8);
|
||||
x_9 = lean_ctor_get(x_4, 2);
|
||||
lean_inc(x_9);
|
||||
x_10 = lean_ctor_get(x_4, 3);
|
||||
lean_inc(x_10);
|
||||
x_11 = lean_nat_dec_eq(x_8, x_9);
|
||||
if (x_11 == 0)
|
||||
{
|
||||
uint8_t x_12;
|
||||
x_12 = !lean_is_exclusive(x_4);
|
||||
if (x_12 == 0)
|
||||
{
|
||||
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_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23;
|
||||
x_13 = lean_ctor_get(x_4, 3);
|
||||
lean_dec(x_13);
|
||||
x_14 = lean_ctor_get(x_4, 2);
|
||||
lean_dec(x_14);
|
||||
x_15 = lean_ctor_get(x_4, 1);
|
||||
lean_dec(x_15);
|
||||
x_16 = lean_ctor_get(x_4, 0);
|
||||
lean_dec(x_16);
|
||||
x_17 = lean_unsigned_to_nat(1u);
|
||||
x_18 = lean_nat_add(x_8, x_17);
|
||||
lean_dec(x_8);
|
||||
lean_ctor_set(x_4, 1, x_18);
|
||||
x_19 = l_Lean_Meta_inferTypeRef;
|
||||
x_20 = lean_st_ref_get(x_19, x_6);
|
||||
x_21 = lean_ctor_get(x_20, 0);
|
||||
lean_inc(x_21);
|
||||
x_22 = lean_ctor_get(x_20, 1);
|
||||
lean_inc(x_22);
|
||||
lean_dec(x_20);
|
||||
x_23 = lean_apply_6(x_21, x_1, x_2, x_3, x_4, x_5, x_22);
|
||||
return x_23;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31;
|
||||
lean_dec(x_4);
|
||||
x_24 = lean_unsigned_to_nat(1u);
|
||||
x_25 = lean_nat_add(x_8, x_24);
|
||||
lean_dec(x_8);
|
||||
x_26 = lean_alloc_ctor(0, 4, 0);
|
||||
lean_ctor_set(x_26, 0, x_7);
|
||||
lean_ctor_set(x_26, 1, x_25);
|
||||
lean_ctor_set(x_26, 2, x_9);
|
||||
lean_ctor_set(x_26, 3, x_10);
|
||||
x_27 = l_Lean_Meta_inferTypeRef;
|
||||
x_28 = lean_st_ref_get(x_27, x_6);
|
||||
x_29 = lean_ctor_get(x_28, 0);
|
||||
lean_inc(x_29);
|
||||
x_30 = lean_ctor_get(x_28, 1);
|
||||
lean_inc(x_30);
|
||||
lean_dec(x_28);
|
||||
x_31 = lean_apply_6(x_29, x_1, x_2, x_3, x_26, x_5, x_30);
|
||||
return x_31;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_32; lean_object* x_33; uint8_t x_34;
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_1);
|
||||
x_32 = l_Lean_withIncRecDepth___rarg___lambda__2___closed__2;
|
||||
x_33 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_32, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_34 = !lean_is_exclusive(x_33);
|
||||
if (x_34 == 0)
|
||||
{
|
||||
return x_33;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_35; lean_object* x_36; lean_object* x_37;
|
||||
x_35 = lean_ctor_get(x_33, 0);
|
||||
x_36 = lean_ctor_get(x_33, 1);
|
||||
lean_inc(x_36);
|
||||
lean_inc(x_35);
|
||||
lean_dec(x_33);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_getLevel___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = l___private_Lean_Meta_InferType_4__getLevelImp(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; uint8_t x_11;
|
||||
x_8 = lean_st_ref_take(x_4, x_7);
|
||||
x_9 = lean_ctor_get(x_8, 0);
|
||||
lean_inc(x_9);
|
||||
x_10 = lean_ctor_get(x_8, 1);
|
||||
lean_inc(x_10);
|
||||
lean_dec(x_8);
|
||||
x_11 = !lean_is_exclusive(x_9);
|
||||
if (x_11 == 0)
|
||||
{
|
||||
lean_object* x_12; lean_object* x_13; lean_object* x_14; uint8_t x_15;
|
||||
x_12 = lean_ctor_get(x_9, 0);
|
||||
x_13 = l_Lean_MetavarContext_assignExpr(x_12, x_1, x_2);
|
||||
lean_ctor_set(x_9, 0, x_13);
|
||||
x_14 = lean_st_ref_set(x_4, x_9, x_10);
|
||||
x_15 = !lean_is_exclusive(x_14);
|
||||
if (x_15 == 0)
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17;
|
||||
x_16 = lean_ctor_get(x_14, 0);
|
||||
lean_dec(x_16);
|
||||
x_17 = lean_box(0);
|
||||
lean_ctor_set(x_14, 0, x_17);
|
||||
return x_14;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_18; lean_object* x_19; lean_object* x_20;
|
||||
x_18 = lean_ctor_get(x_14, 1);
|
||||
lean_inc(x_18);
|
||||
lean_dec(x_14);
|
||||
x_19 = lean_box(0);
|
||||
x_20 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_20, 0, x_19);
|
||||
lean_ctor_set(x_20, 1, x_18);
|
||||
return x_20;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30;
|
||||
x_21 = lean_ctor_get(x_9, 0);
|
||||
x_22 = lean_ctor_get(x_9, 1);
|
||||
x_23 = lean_ctor_get(x_9, 2);
|
||||
lean_inc(x_23);
|
||||
lean_inc(x_22);
|
||||
lean_inc(x_21);
|
||||
lean_dec(x_9);
|
||||
x_24 = l_Lean_MetavarContext_assignExpr(x_21, x_1, x_2);
|
||||
x_25 = lean_alloc_ctor(0, 3, 0);
|
||||
lean_ctor_set(x_25, 0, x_24);
|
||||
lean_ctor_set(x_25, 1, x_22);
|
||||
lean_ctor_set(x_25, 2, x_23);
|
||||
x_26 = lean_st_ref_set(x_4, x_25, x_10);
|
||||
x_27 = lean_ctor_get(x_26, 1);
|
||||
lean_inc(x_27);
|
||||
if (lean_is_exclusive(x_26)) {
|
||||
lean_ctor_release(x_26, 0);
|
||||
lean_ctor_release(x_26, 1);
|
||||
x_28 = x_26;
|
||||
} else {
|
||||
lean_dec_ref(x_26);
|
||||
x_28 = lean_box(0);
|
||||
}
|
||||
x_29 = lean_box(0);
|
||||
if (lean_is_scalar(x_28)) {
|
||||
x_30 = lean_alloc_ctor(0, 2, 0);
|
||||
} else {
|
||||
x_30 = x_28;
|
||||
}
|
||||
lean_ctor_set(x_30, 0, x_29);
|
||||
lean_ctor_set(x_30, 1, x_27);
|
||||
return x_30;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize(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) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -382,7 +179,7 @@ lean_inc(x_6);
|
|||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_2);
|
||||
x_12 = l_Lean_Meta_inferType___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__1(x_2, x_4, x_5, x_6, x_7, x_11);
|
||||
x_12 = l_Lean_Meta_inferType___at_Lean_Meta_synthAppInstances___spec__1(x_2, x_4, x_5, x_6, x_7, x_11);
|
||||
if (lean_obj_tag(x_12) == 0)
|
||||
{
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15;
|
||||
|
|
@ -422,7 +219,7 @@ lean_inc(x_2);
|
|||
x_25 = l_Lean_mkAppB(x_24, x_13, x_2);
|
||||
lean_inc(x_19);
|
||||
x_26 = l_Lean_mkAppB(x_19, x_2, x_25);
|
||||
x_27 = l_Lean_Meta_assignExprMVar___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__3(x_1, x_26, x_4, x_5, x_6, x_7, x_20);
|
||||
x_27 = l_Lean_Meta_assignExprMVar___at_Lean_Meta_admit___spec__2(x_1, x_26, x_4, x_5, x_6, x_7, x_20);
|
||||
x_28 = lean_ctor_get(x_27, 1);
|
||||
lean_inc(x_28);
|
||||
lean_dec(x_27);
|
||||
|
|
@ -585,18 +382,6 @@ return x_57;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8;
|
||||
x_8 = l_Lean_Meta_assignExprMVar___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
lean_object* l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq_match__1___rarg(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -654,97 +439,7 @@ x_2 = lean_alloc_closure((void*)(l___private_Lean_Elab_Tactic_Generalize_0__Lean
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; uint8_t x_8;
|
||||
x_7 = lean_st_ref_get(x_3, x_6);
|
||||
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;
|
||||
x_9 = lean_ctor_get(x_7, 0);
|
||||
x_10 = lean_ctor_get(x_7, 1);
|
||||
x_11 = lean_ctor_get(x_9, 0);
|
||||
lean_inc(x_11);
|
||||
lean_dec(x_9);
|
||||
lean_inc(x_1);
|
||||
x_12 = lean_metavar_ctx_find_decl(x_11, x_1);
|
||||
if (lean_obj_tag(x_12) == 0)
|
||||
{
|
||||
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_object* x_19;
|
||||
lean_free_object(x_7);
|
||||
x_13 = l_Lean_mkMVar(x_1);
|
||||
x_14 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_14, 0, x_13);
|
||||
x_15 = l_Lean_Meta_getMVarDecl___rarg___lambda__1___closed__3;
|
||||
x_16 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_16, 0, x_15);
|
||||
lean_ctor_set(x_16, 1, x_14);
|
||||
x_17 = l_Lean_throwUnknownConstant___rarg___closed__5;
|
||||
x_18 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_16);
|
||||
lean_ctor_set(x_18, 1, x_17);
|
||||
x_19 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_18, x_2, x_3, x_4, x_5, x_10);
|
||||
return x_19;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_20;
|
||||
lean_dec(x_1);
|
||||
x_20 = lean_ctor_get(x_12, 0);
|
||||
lean_inc(x_20);
|
||||
lean_dec(x_12);
|
||||
lean_ctor_set(x_7, 0, x_20);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24;
|
||||
x_21 = lean_ctor_get(x_7, 0);
|
||||
x_22 = lean_ctor_get(x_7, 1);
|
||||
lean_inc(x_22);
|
||||
lean_inc(x_21);
|
||||
lean_dec(x_7);
|
||||
x_23 = lean_ctor_get(x_21, 0);
|
||||
lean_inc(x_23);
|
||||
lean_dec(x_21);
|
||||
lean_inc(x_1);
|
||||
x_24 = lean_metavar_ctx_find_decl(x_23, x_1);
|
||||
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;
|
||||
x_25 = l_Lean_mkMVar(x_1);
|
||||
x_26 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_26, 0, x_25);
|
||||
x_27 = l_Lean_Meta_getMVarDecl___rarg___lambda__1___closed__3;
|
||||
x_28 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_28, 0, x_27);
|
||||
lean_ctor_set(x_28, 1, x_26);
|
||||
x_29 = l_Lean_throwUnknownConstant___rarg___closed__5;
|
||||
x_30 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_30, 0, x_28);
|
||||
lean_ctor_set(x_30, 1, x_29);
|
||||
x_31 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_30, x_2, x_3, x_4, x_5, x_22);
|
||||
return x_31;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_32; lean_object* x_33;
|
||||
lean_dec(x_1);
|
||||
x_32 = lean_ctor_get(x_24, 0);
|
||||
lean_inc(x_32);
|
||||
lean_dec(x_24);
|
||||
x_33 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_33, 0, x_32);
|
||||
lean_ctor_set(x_33, 1, x_22);
|
||||
return x_33;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__2___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; lean_object* x_8; uint8_t x_9;
|
||||
|
|
@ -782,11 +477,11 @@ return x_15;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__2(lean_object* x_1) {
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = lean_alloc_closure((void*)(l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__2___rarg___boxed), 6, 0);
|
||||
x_2 = lean_alloc_closure((void*)(l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1___rarg___boxed), 6, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
|
|
@ -839,7 +534,7 @@ x_31 = lean_ctor_get(x_29, 1);
|
|||
lean_inc(x_31);
|
||||
lean_dec(x_29);
|
||||
lean_inc(x_30);
|
||||
x_32 = l_Lean_Meta_getMVarDecl___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1(x_30, x_8, x_9, x_10, x_11, x_31);
|
||||
x_32 = l_Lean_Meta_getMVarDecl___at_Lean_Meta_getMVarTag___spec__1(x_30, x_8, x_9, x_10, x_11, x_31);
|
||||
if (lean_obj_tag(x_32) == 0)
|
||||
{
|
||||
lean_object* x_33; lean_object* x_34;
|
||||
|
|
@ -879,7 +574,7 @@ lean_inc(x_10);
|
|||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_2);
|
||||
x_42 = l_Lean_Meta_inferType___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__1(x_2, x_8, x_9, x_10, x_11, x_40);
|
||||
x_42 = l_Lean_Meta_inferType___at_Lean_Meta_synthAppInstances___spec__1(x_2, x_8, x_9, x_10, x_11, x_40);
|
||||
if (lean_obj_tag(x_42) == 0)
|
||||
{
|
||||
lean_object* x_43; lean_object* x_44; lean_object* x_45;
|
||||
|
|
@ -1037,7 +732,7 @@ x_73 = lean_ctor_get(x_32, 1);
|
|||
lean_inc(x_73);
|
||||
lean_dec(x_32);
|
||||
x_74 = l___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___lambda__1___closed__3;
|
||||
x_75 = l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__2___rarg(x_74, x_8, x_9, x_10, x_11, x_73);
|
||||
x_75 = l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1___rarg(x_74, x_8, x_9, x_10, x_11, x_73);
|
||||
lean_dec(x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
|
|
@ -1239,23 +934,11 @@ return x_26;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1___rarg___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Meta_getMVarDecl___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__2___rarg___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__2___rarg(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
x_7 = l_Lean_throwError___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeWithEq___spec__1___rarg(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
|
|
@ -1283,7 +966,7 @@ lean_inc(x_10);
|
|||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_1);
|
||||
x_13 = l_Lean_Meta_inferType___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__1(x_1, x_8, x_9, x_10, x_11, x_12);
|
||||
x_13 = l_Lean_Meta_inferType___at_Lean_Meta_synthAppInstances___spec__1(x_1, x_8, x_9, x_10, x_11, x_12);
|
||||
if (lean_obj_tag(x_13) == 0)
|
||||
{
|
||||
lean_object* x_14; lean_object* x_15; lean_object* x_16;
|
||||
|
|
|
|||
152
stage0/stdlib/Lean/Elab/Tactic/Induction.c
generated
152
stage0/stdlib/Lean/Elab/Tactic/Induction.c
generated
|
|
@ -18,6 +18,7 @@ lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_generali
|
|||
lean_object* l_Lean_Elab_Tactic_evalCases(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_findIdxAux___main___at___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfo___spec__2(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_checkCasesResult_loop___closed__2;
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Cases_0__Lean_Meta_Cases_unifyEqsAux___lambda__1___closed__1;
|
||||
size_t l_USize_add(size_t, size_t);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_checkAltCtorNames___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_erase_macro_scopes(lean_object*);
|
||||
|
|
@ -130,7 +131,6 @@ lean_object* l_Lean_resolveGlobalConstNoOverload___at_Lean_Elab_Tactic_getRecFro
|
|||
lean_object* l_Lean_throwUnknownConstant___at_Lean_Elab_Tactic_getRecFromUsing___spec__4(lean_object*);
|
||||
lean_object* l_Std_Range_forIn_loop___at___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_processResult___spec__1___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Name_append___main(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l_Array_shrink___main___rarg(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_elabMajor___lambda__1___closed__1;
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalCases___closed__2;
|
||||
|
|
@ -177,6 +177,7 @@ lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_checkCas
|
|||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_elabMajor(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_throwUnknownConstant___rarg___closed__5;
|
||||
lean_object* l_Lean_Elab_Tactic_getMainGoal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_inferType___at_Lean_Meta_generalize___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Std_Range_forIn_loop___at___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_processResult___spec__1___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_getInductiveValFromMajor___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_expr_dbg_to_string(lean_object*);
|
||||
|
|
@ -191,7 +192,6 @@ lean_object* l_Array_findIdxAux___main___at___private_Lean_Elab_Tactic_Induction
|
|||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_checkCasesResult(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___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_generalizeVars___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_syntaxNodeKindOfAttrParam___closed__6;
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Cases_9__unifyEqsAux___main___lambda__2___closed__1;
|
||||
extern lean_object* l_Lean_throwUnknownConstant___rarg___closed__3;
|
||||
lean_object* l_List_redLength___main___rarg(lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarsNoDelayedImp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -208,15 +208,11 @@ size_t lean_usize_of_nat(lean_object*);
|
|||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_checkCasesResult_loop___closed__3;
|
||||
lean_object* l_List_foldr___main___at___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_checkAltCtorNames___spec__1___boxed(lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Tactic_tacticElabAttribute;
|
||||
lean_object* l_Lean_Meta_whnf___at_Lean_Elab_Tactic_getInductiveValFromMajor___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_resolveGlobalConst___at_Lean_Elab_Tactic_getRecFromUsing___spec__2___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* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecFromUsingLoop_match__4(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfo_match__1___rarg(lean_object*, lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_elabTermEnsuringType(lean_object*, lean_object*, uint8_t, 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_Induction_0__Lean_Elab_Tactic_getRecInfo_match__6___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_inferType___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_processResult___closed__3;
|
||||
lean_object* l_Array_forInUnsafe_loop___at___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_checkAltCtorNames___spec__4___closed__6;
|
||||
lean_object* l_Lean_Meta_mkRecursorInfo(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -241,13 +237,14 @@ lean_object* l_Lean_Syntax_getSepArgs(lean_object*);
|
|||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfo_match__5(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getMajor___boxed(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecFromUsingLoop_match__2___rarg(lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__1;
|
||||
extern lean_object* l_Lean_resolveGlobalConstNoOverload___rarg___lambda__1___closed__2;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfo_match__2___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalCases___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Std_Range_forIn_loop___at___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_processResult___spec__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__2;
|
||||
uint8_t lean_nat_dec_le(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_resolveGlobalConstNoOverload___at_Lean_Elab_Tactic_getRecFromUsing___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__1;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_generalizeVars___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getMajor(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getAltName(lean_object*);
|
||||
|
|
@ -256,6 +253,7 @@ lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecIn
|
|||
lean_object* l_Lean_Syntax_getArgs(lean_object*);
|
||||
lean_object* l_ReaderT_bind___at_Lean_Elab_Tactic_liftMetaTacticAux___spec__1___rarg(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___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfoDefault_match__3(lean_object*);
|
||||
lean_object* l_Lean_Meta_whnf___at_Lean_Meta_introNCore___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_saveBacktrackableState___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalInduction(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_setGoals(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -267,7 +265,6 @@ lean_object* l_Lean_Elab_Tactic_tagUntaggedGoals(lean_object*, lean_object*, lea
|
|||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfoDefault___closed__2;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecFromUsingLoop_match__3___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_elabMajor___lambda__1___closed__2;
|
||||
extern lean_object* l_Lean_Meta_whnfRef;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfo_match__4(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_generalizeVars___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_Lean_Name_isSuffixOf___main(lean_object*, lean_object*);
|
||||
|
|
@ -321,6 +318,7 @@ lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecFr
|
|||
uint8_t l_List_isEmpty___rarg(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfoDefault___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwUnknownConstant___at_Lean_Elab_Tactic_getRecFromUsing___spec__4___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfo(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___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfo_match__3(lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_getRecInfo___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*);
|
||||
|
|
@ -1050,7 +1048,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_Elab_initFn____x40_Lean_Elab_Util___hyg_907____closed__1;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__1;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
@ -1332,7 +1330,7 @@ else
|
|||
lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; uint8_t x_26;
|
||||
lean_dec(x_17);
|
||||
lean_dec(x_16);
|
||||
x_22 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__2;
|
||||
x_22 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__2;
|
||||
x_23 = l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_generalizeVars___lambda__2___closed__3;
|
||||
x_24 = lean_box(0);
|
||||
x_25 = l_Lean_Meta_throwTacticEx___rarg(x_22, x_1, x_23, x_24, x_7, x_8, x_9, x_10, x_15);
|
||||
|
|
@ -2045,7 +2043,7 @@ lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean
|
|||
lean_inc(x_18);
|
||||
x_53 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_53, 0, x_18);
|
||||
x_54 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_54 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_55 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_55, 0, x_54);
|
||||
lean_ctor_set(x_55, 1, x_53);
|
||||
|
|
@ -2230,106 +2228,6 @@ x_1 = l_Array_empty___closed__1;
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_whnf___at_Lean_Elab_Tactic_getInductiveValFromMajor___spec__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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; uint8_t x_11;
|
||||
x_7 = lean_ctor_get(x_4, 0);
|
||||
lean_inc(x_7);
|
||||
x_8 = lean_ctor_get(x_4, 1);
|
||||
lean_inc(x_8);
|
||||
x_9 = lean_ctor_get(x_4, 2);
|
||||
lean_inc(x_9);
|
||||
x_10 = lean_ctor_get(x_4, 3);
|
||||
lean_inc(x_10);
|
||||
x_11 = lean_nat_dec_eq(x_8, x_9);
|
||||
if (x_11 == 0)
|
||||
{
|
||||
uint8_t x_12;
|
||||
x_12 = !lean_is_exclusive(x_4);
|
||||
if (x_12 == 0)
|
||||
{
|
||||
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_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23;
|
||||
x_13 = lean_ctor_get(x_4, 3);
|
||||
lean_dec(x_13);
|
||||
x_14 = lean_ctor_get(x_4, 2);
|
||||
lean_dec(x_14);
|
||||
x_15 = lean_ctor_get(x_4, 1);
|
||||
lean_dec(x_15);
|
||||
x_16 = lean_ctor_get(x_4, 0);
|
||||
lean_dec(x_16);
|
||||
x_17 = lean_unsigned_to_nat(1u);
|
||||
x_18 = lean_nat_add(x_8, x_17);
|
||||
lean_dec(x_8);
|
||||
lean_ctor_set(x_4, 1, x_18);
|
||||
x_19 = l_Lean_Meta_whnfRef;
|
||||
x_20 = lean_st_ref_get(x_19, x_6);
|
||||
x_21 = lean_ctor_get(x_20, 0);
|
||||
lean_inc(x_21);
|
||||
x_22 = lean_ctor_get(x_20, 1);
|
||||
lean_inc(x_22);
|
||||
lean_dec(x_20);
|
||||
x_23 = lean_apply_6(x_21, x_1, x_2, x_3, x_4, x_5, x_22);
|
||||
return x_23;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31;
|
||||
lean_dec(x_4);
|
||||
x_24 = lean_unsigned_to_nat(1u);
|
||||
x_25 = lean_nat_add(x_8, x_24);
|
||||
lean_dec(x_8);
|
||||
x_26 = lean_alloc_ctor(0, 4, 0);
|
||||
lean_ctor_set(x_26, 0, x_7);
|
||||
lean_ctor_set(x_26, 1, x_25);
|
||||
lean_ctor_set(x_26, 2, x_9);
|
||||
lean_ctor_set(x_26, 3, x_10);
|
||||
x_27 = l_Lean_Meta_whnfRef;
|
||||
x_28 = lean_st_ref_get(x_27, x_6);
|
||||
x_29 = lean_ctor_get(x_28, 0);
|
||||
lean_inc(x_29);
|
||||
x_30 = lean_ctor_get(x_28, 1);
|
||||
lean_inc(x_30);
|
||||
lean_dec(x_28);
|
||||
x_31 = lean_apply_6(x_29, x_1, x_2, x_3, x_26, x_5, x_30);
|
||||
return x_31;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_32; lean_object* x_33; uint8_t x_34;
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_1);
|
||||
x_32 = l_Lean_withIncRecDepth___rarg___lambda__2___closed__2;
|
||||
x_33 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_32, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_34 = !lean_is_exclusive(x_33);
|
||||
if (x_34 == 0)
|
||||
{
|
||||
return x_33;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_35; lean_object* x_36; lean_object* x_37;
|
||||
x_35 = lean_ctor_get(x_33, 0);
|
||||
x_36 = lean_ctor_get(x_33, 1);
|
||||
lean_inc(x_36);
|
||||
lean_inc(x_35);
|
||||
lean_dec(x_33);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Tactic_getInductiveValFromMajor___lambda__1___closed__1() {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -2355,7 +2253,7 @@ lean_inc(x_6);
|
|||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
x_8 = l_Lean_Meta_whnf___at_Lean_Elab_Tactic_getInductiveValFromMajor___spec__1(x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
x_8 = l_Lean_Meta_whnf___at_Lean_Meta_introNCore___spec__4(x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
if (lean_obj_tag(x_8) == 0)
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10; lean_object* x_11;
|
||||
|
|
@ -2391,11 +2289,11 @@ x_20 = l_Lean_Elab_Tactic_getInductiveValFromMajor___lambda__1___closed__2;
|
|||
x_21 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_21, 0, x_20);
|
||||
lean_ctor_set(x_21, 1, x_19);
|
||||
x_22 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_22 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_23 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_23, 0, x_21);
|
||||
lean_ctor_set(x_23, 1, x_22);
|
||||
x_24 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__2;
|
||||
x_24 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__2;
|
||||
x_25 = lean_box(0);
|
||||
x_26 = l_Lean_Meta_throwTacticEx___rarg(x_24, x_1, x_23, x_25, x_3, x_4, x_5, x_6, x_16);
|
||||
lean_dec(x_6);
|
||||
|
|
@ -2435,11 +2333,11 @@ x_30 = l_Lean_Elab_Tactic_getInductiveValFromMajor___lambda__1___closed__2;
|
|||
x_31 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_31, 0, x_30);
|
||||
lean_ctor_set(x_31, 1, x_29);
|
||||
x_32 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_32 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_33 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_33, 0, x_31);
|
||||
lean_ctor_set(x_33, 1, x_32);
|
||||
x_34 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__2;
|
||||
x_34 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__2;
|
||||
x_35 = lean_box(0);
|
||||
x_36 = l_Lean_Meta_throwTacticEx___rarg(x_34, x_1, x_33, x_35, x_3, x_4, x_5, x_6, x_16);
|
||||
lean_dec(x_6);
|
||||
|
|
@ -2470,11 +2368,11 @@ x_42 = l_Lean_Elab_Tactic_getInductiveValFromMajor___lambda__1___closed__2;
|
|||
x_43 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_43, 0, x_42);
|
||||
lean_ctor_set(x_43, 1, x_41);
|
||||
x_44 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_44 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_45 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_45, 0, x_43);
|
||||
lean_ctor_set(x_45, 1, x_44);
|
||||
x_46 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__2;
|
||||
x_46 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__2;
|
||||
x_47 = lean_box(0);
|
||||
x_48 = l_Lean_Meta_throwTacticEx___rarg(x_46, x_1, x_45, x_47, x_3, x_4, x_5, x_6, x_38);
|
||||
lean_dec(x_6);
|
||||
|
|
@ -2515,11 +2413,11 @@ x_53 = l_Lean_Elab_Tactic_getInductiveValFromMajor___lambda__1___closed__2;
|
|||
x_54 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_54, 0, x_53);
|
||||
lean_ctor_set(x_54, 1, x_52);
|
||||
x_55 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_55 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_56 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_56, 0, x_54);
|
||||
lean_ctor_set(x_56, 1, x_55);
|
||||
x_57 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__2;
|
||||
x_57 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__2;
|
||||
x_58 = lean_box(0);
|
||||
x_59 = l_Lean_Meta_throwTacticEx___rarg(x_57, x_1, x_56, x_58, x_3, x_4, x_5, x_6, x_38);
|
||||
lean_dec(x_6);
|
||||
|
|
@ -2540,11 +2438,11 @@ x_61 = l_Lean_Elab_Tactic_getInductiveValFromMajor___lambda__1___closed__2;
|
|||
x_62 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_62, 0, x_61);
|
||||
lean_ctor_set(x_62, 1, x_60);
|
||||
x_63 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_63 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_64 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_64, 0, x_62);
|
||||
lean_ctor_set(x_64, 1, x_63);
|
||||
x_65 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__2;
|
||||
x_65 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__2;
|
||||
x_66 = lean_box(0);
|
||||
x_67 = l_Lean_Meta_throwTacticEx___rarg(x_65, x_1, x_64, x_66, x_3, x_4, x_5, x_6, x_10);
|
||||
lean_dec(x_6);
|
||||
|
|
@ -2599,7 +2497,7 @@ lean_dec(x_11);
|
|||
x_14 = lean_ctor_get(x_12, 0);
|
||||
lean_inc(x_14);
|
||||
lean_dec(x_12);
|
||||
x_15 = lean_alloc_closure((void*)(l_Lean_Meta_inferType___at___private_Lean_Elab_Tactic_Generalize_0__Lean_Elab_Tactic_evalGeneralizeFinalize___spec__1), 6, 1);
|
||||
x_15 = lean_alloc_closure((void*)(l_Lean_Meta_inferType___at_Lean_Meta_generalize___spec__3), 6, 1);
|
||||
lean_closure_set(x_15, 0, x_1);
|
||||
lean_inc(x_14);
|
||||
x_16 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_getInductiveValFromMajor___lambda__1), 7, 1);
|
||||
|
|
@ -8510,7 +8408,7 @@ lean_dec(x_29);
|
|||
x_32 = lean_ctor_get(x_18, 0);
|
||||
lean_inc(x_32);
|
||||
lean_dec(x_18);
|
||||
x_33 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__2;
|
||||
x_33 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__2;
|
||||
lean_inc(x_31);
|
||||
x_34 = l_Lean_Elab_Tactic_tagUntaggedGoals(x_32, x_33, x_31, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_30);
|
||||
lean_dec(x_11);
|
||||
|
|
@ -8668,7 +8566,7 @@ lean_dec(x_65);
|
|||
x_68 = lean_ctor_get(x_54, 0);
|
||||
lean_inc(x_68);
|
||||
lean_dec(x_54);
|
||||
x_69 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__2;
|
||||
x_69 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__2;
|
||||
lean_inc(x_67);
|
||||
x_70 = l_Lean_Elab_Tactic_tagUntaggedGoals(x_68, x_69, x_67, x_4, x_5, x_6, x_7, x_8, x_9, x_52, x_11, x_66);
|
||||
lean_dec(x_11);
|
||||
|
|
@ -9666,7 +9564,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l___regBuiltin_Lean_Elab_Term_Quotation_elabTacticQuot___closed__1;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Induction_2__addRecParams___main___closed__1;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Induction_0__Lean_Meta_addRecParams___closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
@ -10369,7 +10267,7 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l___regBuiltin_Lean_Elab_Term_Quotation_elabTacticQuot___closed__1;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Cases_9__unifyEqsAux___main___lambda__2___closed__1;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Cases_0__Lean_Meta_Cases_unifyEqsAux___lambda__1___closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
|
|
|
|||
4
stage0/stdlib/Lean/Elab/Tactic/Injection.c
generated
4
stage0/stdlib/Lean/Elab/Tactic/Injection.c
generated
|
|
@ -25,7 +25,6 @@ lean_object* l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(lean_object*, lean_obj
|
|||
lean_object* l___private_Lean_Elab_Tactic_Injection_0__Lean_Elab_Tactic_checkUnusedIds___closed__1;
|
||||
lean_object* l___private_Lean_Elab_Tactic_Injection_0__Lean_Elab_Tactic_getInjectionNewIds(lean_object*);
|
||||
lean_object* l___regBuiltin_Lean_Elab_Tactic_evalInjection(lean_object*);
|
||||
extern lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
lean_object* l_Lean_Syntax_getId(lean_object*);
|
||||
lean_object* lean_name_mk_string(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Tactic_evalInjection_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -51,6 +50,7 @@ lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*);
|
|||
lean_object* l_List_map___main___at___private_Lean_Elab_Tactic_Injection_0__Lean_Elab_Tactic_getInjectionNewIds___spec__1(lean_object*);
|
||||
lean_object* l_Lean_Meta_injection(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_List_isEmpty___rarg(lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l_List_map___main___at___private_Lean_Elab_Tactic_Injection_0__Lean_Elab_Tactic_checkUnusedIds___spec__1(lean_object*);
|
||||
extern lean_object* l_Lean_Meta_injectionCore___closed__2;
|
||||
lean_object* l_Lean_Elab_Tactic_liftMetaTacticAux___rarg___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -208,7 +208,7 @@ x_11 = l___private_Lean_Elab_Tactic_Injection_0__Lean_Elab_Tactic_checkUnusedIds
|
|||
x_12 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_12, 0, x_11);
|
||||
lean_ctor_set(x_12, 1, x_10);
|
||||
x_13 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_13 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_14 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_14, 0, x_12);
|
||||
lean_ctor_set(x_14, 1, x_13);
|
||||
|
|
|
|||
75
stage0/stdlib/Lean/Elab/Term.c
generated
75
stage0/stdlib/Lean/Elab/Term.c
generated
|
|
@ -315,7 +315,6 @@ lean_object* l_Lean_throwError___at_Lean_Elab_Term_throwErrorIfErrors___spec__1(
|
|||
lean_object* l_Std_PersistentHashMap_find_x3f___at___private_Lean_Elab_Term_0__Lean_Elab_Term_elabUsingElabFns___spec__2___boxed(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Util_Trace_3__checkTraceOptionM___at___private_Lean_Elab_Term_0__Lean_Elab_Term_postponeElabTerm___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_SavedState_inhabited___closed__2;
|
||||
lean_object* l_Lean_Elab_Term_mkTypeMismatchError___closed__9;
|
||||
lean_object* l_Lean_Elab_Term_monadLog___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Elab_Term_elabParen___closed__1;
|
||||
lean_object* l_Nat_foldMAux___main___at___private_Lean_Elab_Term_0__Lean_Elab_Term_mkFreshLevelMVars___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -1011,6 +1010,7 @@ lean_object* l_Lean_Elab_throwUnsupportedSyntax___at___private_Lean_Elab_Term_0_
|
|||
lean_object* l_Lean_Elab_Term_applyResult(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_local_ctx_find(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Term_0__Lean_Elab_Term_tryCoe(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l___private_Lean_Util_Trace_5__getResetTraces___at_Lean_Meta_isLevelDefEq___spec__4___rarg(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Elab_Term_0__Lean_Elab_Term_expandCDot_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Std_PersistentHashMap_find_x3f___at___private_Lean_Elab_Term_0__Lean_Elab_Term_elabUsingElabFns___spec__2(lean_object*, lean_object*);
|
||||
|
|
@ -9415,30 +9415,21 @@ return x_2;
|
|||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_String_splitAux___main___closed__1;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string("\nbut is expected to have type");
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__3() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_mkTypeMismatchError___closed__2;
|
||||
x_1 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__4() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -9446,16 +9437,16 @@ x_1 = lean_mk_string("type mismatch");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__5() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__4() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_mkTypeMismatchError___closed__4;
|
||||
x_1 = l_Lean_Elab_Term_mkTypeMismatchError___closed__3;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__6() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__5() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -9463,16 +9454,16 @@ x_1 = lean_mk_string("\nhas type");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__7() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__6() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_mkTypeMismatchError___closed__6;
|
||||
x_1 = l_Lean_Elab_Term_mkTypeMismatchError___closed__5;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__8() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__7() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -9480,11 +9471,11 @@ x_1 = lean_mk_string(" has type");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__9() {
|
||||
static lean_object* _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__8() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Elab_Term_mkTypeMismatchError___closed__8;
|
||||
x_1 = l_Lean_Elab_Term_mkTypeMismatchError___closed__7;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
|
|
@ -9499,15 +9490,15 @@ if (lean_obj_tag(x_1) == 0)
|
|||
{
|
||||
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; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19;
|
||||
x_7 = l_Lean_indentExpr(x_2);
|
||||
x_8 = l_Lean_Elab_Term_mkTypeMismatchError___closed__5;
|
||||
x_8 = l_Lean_Elab_Term_mkTypeMismatchError___closed__4;
|
||||
x_9 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_9, 0, x_8);
|
||||
lean_ctor_set(x_9, 1, x_7);
|
||||
x_10 = l_Lean_Elab_Term_mkTypeMismatchError___closed__7;
|
||||
x_10 = l_Lean_Elab_Term_mkTypeMismatchError___closed__6;
|
||||
x_11 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_11, 0, x_9);
|
||||
lean_ctor_set(x_11, 1, x_10);
|
||||
x_12 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_12 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_13 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_13, 0, x_12);
|
||||
lean_ctor_set(x_13, 1, x_11);
|
||||
|
|
@ -9517,7 +9508,7 @@ lean_ctor_set(x_14, 1, x_12);
|
|||
x_15 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_15, 0, x_14);
|
||||
lean_ctor_set(x_15, 1, x_5);
|
||||
x_16 = l_Lean_Elab_Term_mkTypeMismatchError___closed__3;
|
||||
x_16 = l_Lean_Elab_Term_mkTypeMismatchError___closed__2;
|
||||
x_17 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_17, 0, x_15);
|
||||
lean_ctor_set(x_17, 1, x_16);
|
||||
|
|
@ -9535,11 +9526,11 @@ lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean
|
|||
lean_dec(x_2);
|
||||
x_20 = lean_ctor_get(x_1, 0);
|
||||
x_21 = l_Lean_stringToMessageData(x_20);
|
||||
x_22 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_22 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_23 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_23, 0, x_22);
|
||||
lean_ctor_set(x_23, 1, x_21);
|
||||
x_24 = l_Lean_Elab_Term_mkTypeMismatchError___closed__9;
|
||||
x_24 = l_Lean_Elab_Term_mkTypeMismatchError___closed__8;
|
||||
x_25 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_23);
|
||||
lean_ctor_set(x_25, 1, x_24);
|
||||
|
|
@ -9552,7 +9543,7 @@ lean_ctor_set(x_27, 1, x_22);
|
|||
x_28 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_28, 0, x_27);
|
||||
lean_ctor_set(x_28, 1, x_5);
|
||||
x_29 = l_Lean_Elab_Term_mkTypeMismatchError___closed__3;
|
||||
x_29 = l_Lean_Elab_Term_mkTypeMismatchError___closed__2;
|
||||
x_30 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_30, 0, x_28);
|
||||
lean_ctor_set(x_30, 1, x_29);
|
||||
|
|
@ -11239,7 +11230,7 @@ x_20 = l_Lean_Elab_Term_synthesizeInstMVarCore___closed__2;
|
|||
x_21 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_21, 0, x_20);
|
||||
lean_ctor_set(x_21, 1, x_19);
|
||||
x_22 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_22 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_23 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_23, 0, x_21);
|
||||
lean_ctor_set(x_23, 1, x_22);
|
||||
|
|
@ -11326,7 +11317,7 @@ x_49 = l_Lean_indentExpr(x_38);
|
|||
x_50 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_50, 0, x_48);
|
||||
lean_ctor_set(x_50, 1, x_49);
|
||||
x_51 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_51 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_52 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_52, 0, x_50);
|
||||
lean_ctor_set(x_52, 1, x_51);
|
||||
|
|
@ -14625,7 +14616,7 @@ x_22 = l_Lean_Elab_Term_synthesizeInstMVarCore___closed__2;
|
|||
x_23 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_23, 0, x_22);
|
||||
lean_ctor_set(x_23, 1, x_21);
|
||||
x_24 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_24 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_25 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_23);
|
||||
lean_ctor_set(x_25, 1, x_24);
|
||||
|
|
@ -20309,7 +20300,7 @@ lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean
|
|||
lean_inc(x_1);
|
||||
x_28 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_28, 0, x_1);
|
||||
x_29 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_29 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_30 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_30, 0, x_29);
|
||||
lean_ctor_set(x_30, 1, x_28);
|
||||
|
|
@ -20512,7 +20503,7 @@ x_18 = l___private_Lean_Elab_Term_0__Lean_Elab_Term_elabUsingElabFnsAux___closed
|
|||
x_19 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_19, 0, x_18);
|
||||
lean_ctor_set(x_19, 1, x_17);
|
||||
x_20 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_20 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_21 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_21, 0, x_19);
|
||||
lean_ctor_set(x_21, 1, x_20);
|
||||
|
|
@ -23804,7 +23795,7 @@ lean_object* x_124; lean_object* x_125; lean_object* x_126; lean_object* x_127;
|
|||
x_124 = l_Lean_Option_format___at___private_Lean_Elab_Term_0__Lean_Elab_Term_postponeElabTerm___spec__2(x_1);
|
||||
x_125 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_125, 0, x_124);
|
||||
x_126 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_126 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_127 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_127, 0, x_126);
|
||||
lean_ctor_set(x_127, 1, x_125);
|
||||
|
|
@ -24239,7 +24230,7 @@ lean_object* x_231; lean_object* x_232; lean_object* x_233; lean_object* x_234;
|
|||
x_231 = l_Lean_Option_format___at___private_Lean_Elab_Term_0__Lean_Elab_Term_postponeElabTerm___spec__2(x_1);
|
||||
x_232 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_232, 0, x_231);
|
||||
x_233 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_233 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_234 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_234, 0, x_233);
|
||||
lean_ctor_set(x_234, 1, x_232);
|
||||
|
|
@ -24781,7 +24772,7 @@ lean_object* x_360; lean_object* x_361; lean_object* x_362; lean_object* x_363;
|
|||
x_360 = l_Lean_Option_format___at___private_Lean_Elab_Term_0__Lean_Elab_Term_postponeElabTerm___spec__2(x_1);
|
||||
x_361 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_361, 0, x_360);
|
||||
x_362 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_362 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_363 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_363, 0, x_362);
|
||||
lean_ctor_set(x_363, 1, x_361);
|
||||
|
|
@ -25369,7 +25360,7 @@ lean_object* x_500; lean_object* x_501; lean_object* x_502; lean_object* x_503;
|
|||
x_500 = l_Lean_Option_format___at___private_Lean_Elab_Term_0__Lean_Elab_Term_postponeElabTerm___spec__2(x_1);
|
||||
x_501 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_501, 0, x_500);
|
||||
x_502 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_502 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_503 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_503, 0, x_502);
|
||||
lean_ctor_set(x_503, 1, x_501);
|
||||
|
|
@ -26250,7 +26241,7 @@ x_40 = l___private_Lean_Elab_Term_0__Lean_Elab_Term_tryCoeSort___closed__4;
|
|||
x_41 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_41, 0, x_40);
|
||||
lean_ctor_set(x_41, 1, x_39);
|
||||
x_42 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_42 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_43 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_43, 0, x_41);
|
||||
lean_ctor_set(x_43, 1, x_42);
|
||||
|
|
@ -27832,7 +27823,7 @@ x_80 = l_Lean_Elab_Term_elabSyntheticHole___closed__8;
|
|||
x_81 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_81, 0, x_80);
|
||||
lean_ctor_set(x_81, 1, x_79);
|
||||
x_82 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_82 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_83 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_83, 0, x_81);
|
||||
lean_ctor_set(x_83, 1, x_82);
|
||||
|
|
@ -27877,7 +27868,7 @@ x_92 = l_Lean_Elab_Term_elabSyntheticHole___closed__8;
|
|||
x_93 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_93, 0, x_92);
|
||||
lean_ctor_set(x_93, 1, x_91);
|
||||
x_94 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_94 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_95 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_95, 0, x_93);
|
||||
lean_ctor_set(x_95, 1, x_94);
|
||||
|
|
@ -28106,7 +28097,7 @@ x_141 = l_Lean_Elab_Term_elabSyntheticHole___closed__8;
|
|||
x_142 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_142, 0, x_141);
|
||||
lean_ctor_set(x_142, 1, x_140);
|
||||
x_143 = l_Lean_Elab_Term_mkTypeMismatchError___closed__1;
|
||||
x_143 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_144 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_144, 0, x_142);
|
||||
lean_ctor_set(x_144, 1, x_143);
|
||||
|
|
@ -34666,8 +34657,6 @@ l_Lean_Elab_Term_mkTypeMismatchError___closed__7 = _init_l_Lean_Elab_Term_mkType
|
|||
lean_mark_persistent(l_Lean_Elab_Term_mkTypeMismatchError___closed__7);
|
||||
l_Lean_Elab_Term_mkTypeMismatchError___closed__8 = _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__8();
|
||||
lean_mark_persistent(l_Lean_Elab_Term_mkTypeMismatchError___closed__8);
|
||||
l_Lean_Elab_Term_mkTypeMismatchError___closed__9 = _init_l_Lean_Elab_Term_mkTypeMismatchError___closed__9();
|
||||
lean_mark_persistent(l_Lean_Elab_Term_mkTypeMismatchError___closed__9);
|
||||
l_Lean_Elab_Term_synthesizeInstMVarCore___closed__1 = _init_l_Lean_Elab_Term_synthesizeInstMVarCore___closed__1();
|
||||
lean_mark_persistent(l_Lean_Elab_Term_synthesizeInstMVarCore___closed__1);
|
||||
l_Lean_Elab_Term_synthesizeInstMVarCore___closed__2 = _init_l_Lean_Elab_Term_synthesizeInstMVarCore___closed__2();
|
||||
|
|
|
|||
35
stage0/stdlib/Lean/Meta/Match/CaseArraySizes.c
generated
35
stage0/stdlib/Lean/Meta/Match/CaseArraySizes.c
generated
|
|
@ -18,13 +18,14 @@ lean_object* l_Lean_Meta_caseArraySizes___closed__2;
|
|||
lean_object* lean_mk_empty_array_with_capacity(lean_object*);
|
||||
lean_object* l_Lean_Meta_mkAppM___at_Lean_Meta_mkDecideProof___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_caseArraySizes___closed__3;
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___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*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_CaseArraySizes_2__introArrayLitAux___main___closed__3;
|
||||
extern lean_object* l_Array_empty___closed__1;
|
||||
extern lean_object* l_Lean_Array_hasQuote___rarg___closed__2;
|
||||
lean_object* l___private_Lean_Meta_Match_CaseArraySizes_3__introArrayLit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarTag(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_mkArrayLit___at___private_Lean_Meta_Match_CaseArraySizes_2__introArrayLitAux___main___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__4___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* l_ReaderT_bind___at_Lean_Meta_Lean_MonadLCtx___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Literal_type___closed__3;
|
||||
lean_object* lean_array_push(lean_object*, lean_object*);
|
||||
|
|
@ -33,9 +34,11 @@ lean_object* l___private_Lean_Meta_Match_CaseArraySizes_2__introArrayLitAux___ma
|
|||
extern lean_object* l_Lean_Name_inhabited;
|
||||
lean_object* l_Lean_Expr_appArg_x21(lean_object*);
|
||||
lean_object* l_Lean_Meta_inferType___at___private_Lean_Meta_InferType_1__inferAppType___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_mkEqSymm___at_Lean_Meta_caseArraySizes___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_mkDecideProof___at___private_Lean_Meta_Match_CaseArraySizes_1__mkArrayGetLit___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__3___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* l___private_Lean_Meta_AppBuilder_10__mkEqSymmImp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_mkDecideProof___rarg___lambda__1___closed__2;
|
||||
lean_object* l___private_Lean_Meta_Match_CaseArraySizes_1__mkArrayGetLit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_CaseArraySizes_2__introArrayLitAux___main___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -58,7 +61,6 @@ lean_object* l_Lean_Name_appendIndexAfter(lean_object*, lean_object*);
|
|||
lean_object* l_Lean_Meta_getArrayArgType___closed__2;
|
||||
lean_object* l___private_Lean_Meta_Match_CaseArraySizes_2__introArrayLitAux___main___closed__5;
|
||||
lean_object* lean_name_mk_string(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_CaseArraySizes_2__introArrayLitAux___main___lambda__2(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*);
|
||||
extern lean_object* l_Lean_Meta_mkLt___rarg___closed__4;
|
||||
lean_object* l_Lean_Meta_introNCore(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -72,10 +74,10 @@ extern lean_object* l_Array_myMacro____x40_Init_Data_Array_Macros___hyg_141____c
|
|||
extern lean_object* l_Lean_boolToExpr___lambda__1___closed__6;
|
||||
lean_object* l_Lean_Meta_CaseArraySizesSubgoal_inhabited;
|
||||
lean_object* l___private_Lean_Meta_Match_CaseArraySizes_1__mkArrayGetLit___closed__1;
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_get(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_CaseArraySizes_2__introArrayLitAux___main___closed__1;
|
||||
lean_object* l_Lean_Meta_assertExt(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Array_myMacro____x40_Init_Data_Array_Macros___hyg_464____closed__24;
|
||||
lean_object* l___private_Lean_Meta_Match_CaseArraySizes_2__introArrayLitAux___main___closed__4;
|
||||
lean_object* l_Lean_mkApp(lean_object*, lean_object*);
|
||||
|
|
@ -92,7 +94,6 @@ lean_object* l_Lean_Meta_assignExprMVar___at___private_Lean_Meta_InferType_4__ge
|
|||
lean_object* l_Array_toList___rarg(lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__2___boxed(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__1(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_mkEqSymm___at_Lean_Meta_substCore___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_AppBuilder_5__mkEqReflImp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_mkOptionalNode___closed__2;
|
||||
lean_object* l_Lean_Meta_whnfD___at___private_Lean_Meta_InferType_4__getLevelImp___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -1451,7 +1452,15 @@ goto _start;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__3___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* l_Lean_Meta_mkEqSymm___at_Lean_Meta_caseArraySizes___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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = l___private_Lean_Meta_AppBuilder_10__mkEqSymmImp(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__4___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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_13;
|
||||
|
|
@ -1713,7 +1722,7 @@ return x_65;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___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, lean_object* x_11, lean_object* x_12) {
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__4(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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_13; uint8_t x_14;
|
||||
|
|
@ -1879,12 +1888,12 @@ lean_inc(x_60);
|
|||
lean_dec(x_58);
|
||||
lean_inc(x_24);
|
||||
x_61 = l_Lean_mkFVar(x_24);
|
||||
x_62 = lean_alloc_closure((void*)(l_Lean_Meta_mkEqSymm___at_Lean_Meta_substCore___spec__5), 6, 1);
|
||||
x_62 = lean_alloc_closure((void*)(l_Lean_Meta_mkEqSymm___at_Lean_Meta_caseArraySizes___spec__3), 6, 1);
|
||||
lean_closure_set(x_62, 0, x_61);
|
||||
lean_inc(x_2);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_59);
|
||||
x_63 = lean_alloc_closure((void*)(l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__3___lambda__1), 12, 6);
|
||||
x_63 = lean_alloc_closure((void*)(l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__4___lambda__1), 12, 6);
|
||||
lean_closure_set(x_63, 0, x_59);
|
||||
lean_closure_set(x_63, 1, x_3);
|
||||
lean_closure_set(x_63, 2, x_49);
|
||||
|
|
@ -1898,7 +1907,7 @@ lean_inc(x_11);
|
|||
lean_inc(x_10);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
x_65 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(x_59, x_64, x_8, x_9, x_10, x_11, x_60);
|
||||
x_65 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(x_59, x_64, x_8, x_9, x_10, x_11, x_60);
|
||||
if (lean_obj_tag(x_65) == 0)
|
||||
{
|
||||
lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71;
|
||||
|
|
@ -2161,7 +2170,7 @@ x_43 = lean_ctor_get(x_41, 1);
|
|||
lean_inc(x_43);
|
||||
lean_dec(x_41);
|
||||
x_44 = x_42;
|
||||
x_45 = lean_alloc_closure((void*)(l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__3___boxed), 12, 7);
|
||||
x_45 = lean_alloc_closure((void*)(l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__4___boxed), 12, 7);
|
||||
lean_closure_set(x_45, 0, x_3);
|
||||
lean_closure_set(x_45, 1, x_4);
|
||||
lean_closure_set(x_45, 2, x_11);
|
||||
|
|
@ -2373,11 +2382,11 @@ lean_dec(x_1);
|
|||
return x_4;
|
||||
}
|
||||
}
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___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, lean_object* x_11, lean_object* x_12) {
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__4___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, lean_object* x_11, lean_object* x_12) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_13;
|
||||
x_13 = l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
|
||||
x_13 = l_Array_umapMAux___main___at_Lean_Meta_caseArraySizes___spec__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
|
||||
lean_dec(x_1);
|
||||
return x_13;
|
||||
}
|
||||
|
|
|
|||
112
stage0/stdlib/Lean/Meta/Match/CaseValues.c
generated
112
stage0/stdlib/Lean/Meta/Match/CaseValues.c
generated
|
|
@ -18,6 +18,7 @@ lean_object* l_Array_iterateMAux___main___at___private_Lean_Meta_Match_CaseValue
|
|||
lean_object* l_Lean_Expr_mvarId_x21(lean_object*);
|
||||
lean_object* lean_mk_empty_array_with_capacity(lean_object*);
|
||||
lean_object* l_Lean_Meta_appendTagSuffix(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_List_repr___rarg___closed__1;
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__3___closed__2;
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__2___closed__3;
|
||||
lean_object* l___private_Lean_Util_Trace_4__addNode___at_Lean_Meta_isLevelDefEq___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -27,7 +28,6 @@ extern lean_object* l_Array_empty___closed__1;
|
|||
lean_object* l___private_Lean_Meta_Match_CaseValues_1__caseValuesAux___main___closed__7;
|
||||
lean_object* lean_st_ref_get(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__4___closed__2;
|
||||
lean_object* l_List_toString___at_Lean_Meta_substCore___spec__1(lean_object*);
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__5___closed__4;
|
||||
extern lean_object* l_Lean_Meta_mkAppM___rarg___closed__2;
|
||||
lean_object* l_Lean_Meta_FVarSubst_domain(lean_object*);
|
||||
|
|
@ -36,7 +36,10 @@ lean_object* l_ReaderT_bind___at_Lean_Meta_Lean_MonadLCtx___spec__2___rarg(lean_
|
|||
lean_object* l___private_Lean_Meta_AppBuilder_20__mkFun___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_push(lean_object*, lean_object*);
|
||||
lean_object* lean_array_get_size(lean_object*);
|
||||
lean_object* lean_string_append(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_CaseValues_1__caseValuesAux___main___closed__3;
|
||||
extern lean_object* l_String_splitAux___main___closed__1;
|
||||
extern lean_object* l_List_repr___rarg___closed__3;
|
||||
lean_object* l_Lean_Meta_caseValue___closed__1;
|
||||
lean_object* l_Lean_Meta_CaseValueSubgoal_inhabited;
|
||||
extern lean_object* l___private_Lean_Meta_Basic_1__regTraceClasses___closed__2;
|
||||
|
|
@ -44,6 +47,7 @@ lean_object* l___private_Lean_Meta_Match_CaseValues_1__caseValuesAux___main___cl
|
|||
lean_object* l_Lean_Meta_caseValueAux___lambda__1___boxed(lean_object*, lean_object*);
|
||||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__1___closed__2;
|
||||
lean_object* l_List_toStringAux___main___at_Lean_Meta_caseValueAux___spec__3(uint8_t, lean_object*);
|
||||
lean_object* l_Lean_Meta_intro1Core(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_fget(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__5___closed__9;
|
||||
|
|
@ -61,8 +65,10 @@ lean_object* l_Lean_Meta_caseValue___closed__2;
|
|||
lean_object* l_Lean_Expr_fvarId_x21(lean_object*);
|
||||
lean_object* l_Lean_Name_appendIndexAfter(lean_object*, lean_object*);
|
||||
lean_object* lean_name_mk_string(lean_object*, lean_object*);
|
||||
extern lean_object* l_List_repr___rarg___closed__2;
|
||||
lean_object* l_Lean_Meta_CaseValueSubgoals_inhabited___closed__1;
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_toString___at_Lean_Meta_caseValueAux___spec__2(lean_object*);
|
||||
extern lean_object* l_List_reprAux___main___rarg___closed__1;
|
||||
lean_object* l___private_Lean_Meta_Match_CaseValues_1__caseValuesAux___main___closed__1;
|
||||
lean_object* l_Lean_Meta_caseValue(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_caseValue___closed__6;
|
||||
|
|
@ -73,6 +79,7 @@ lean_object* l_Lean_Meta_caseValue___closed__5;
|
|||
lean_object* l_Lean_mkFVar(lean_object*);
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__5___closed__6;
|
||||
lean_object* l___private_Lean_Meta_Match_CaseValues_1__caseValuesAux___main___closed__4;
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_throwTacticEx___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_get(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_caseValueAux(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -97,13 +104,16 @@ lean_object* l_Lean_Meta_caseValueAux___lambda__4(lean_object*, lean_object*, le
|
|||
lean_object* l_Array_toList___rarg(lean_object*);
|
||||
lean_object* l___private_Lean_Util_Trace_3__checkTraceOptionM___at_Lean_Meta_isLevelDefEq___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__5___closed__7;
|
||||
lean_object* l_List_toStringAux___main___at_Lean_Meta_caseValueAux___spec__3___boxed(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__5___closed__2;
|
||||
extern lean_object* l_Lean_mkOptionalNode___closed__2;
|
||||
lean_object* l_Lean_MonadTracer_trace___at_Lean_Meta_isLevelDefEq___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_mkFreshExprSyntheticOpaqueMVar(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_CaseValues_1__caseValuesAux___main___closed__6;
|
||||
lean_object* l_Lean_Meta_CaseValueSubgoals_inhabited;
|
||||
extern lean_object* l_System_FilePath_dirName___closed__1;
|
||||
lean_object* l___private_Lean_Meta_Match_CaseValues_1__caseValuesAux(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Name_toStringWithSep___main(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Util_Trace_5__getResetTraces___at_Lean_Meta_isLevelDefEq___spec__4___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_CaseValueSubgoal_inhabited___closed__1;
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__1___closed__3;
|
||||
|
|
@ -989,6 +999,86 @@ return x_212;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_List_toStringAux___main___at_Lean_Meta_caseValueAux___spec__3(uint8_t x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
if (x_1 == 0)
|
||||
{
|
||||
if (lean_obj_tag(x_2) == 0)
|
||||
{
|
||||
lean_object* x_3;
|
||||
x_3 = l_String_splitAux___main___closed__1;
|
||||
return x_3;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11;
|
||||
x_4 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_4);
|
||||
x_5 = lean_ctor_get(x_2, 1);
|
||||
lean_inc(x_5);
|
||||
lean_dec(x_2);
|
||||
x_6 = l_System_FilePath_dirName___closed__1;
|
||||
x_7 = l_Lean_Name_toStringWithSep___main(x_6, x_4);
|
||||
x_8 = l_List_reprAux___main___rarg___closed__1;
|
||||
x_9 = lean_string_append(x_8, x_7);
|
||||
lean_dec(x_7);
|
||||
x_10 = l_List_toStringAux___main___at_Lean_Meta_caseValueAux___spec__3(x_1, x_5);
|
||||
x_11 = lean_string_append(x_9, x_10);
|
||||
lean_dec(x_10);
|
||||
return x_11;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lean_obj_tag(x_2) == 0)
|
||||
{
|
||||
lean_object* x_12;
|
||||
x_12 = l_String_splitAux___main___closed__1;
|
||||
return x_12;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; lean_object* x_18; lean_object* x_19;
|
||||
x_13 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_13);
|
||||
x_14 = lean_ctor_get(x_2, 1);
|
||||
lean_inc(x_14);
|
||||
lean_dec(x_2);
|
||||
x_15 = l_System_FilePath_dirName___closed__1;
|
||||
x_16 = l_Lean_Name_toStringWithSep___main(x_15, x_13);
|
||||
x_17 = 0;
|
||||
x_18 = l_List_toStringAux___main___at_Lean_Meta_caseValueAux___spec__3(x_17, x_14);
|
||||
x_19 = lean_string_append(x_16, x_18);
|
||||
lean_dec(x_18);
|
||||
return x_19;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_List_toString___at_Lean_Meta_caseValueAux___spec__2(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_1) == 0)
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = l_List_repr___rarg___closed__1;
|
||||
return x_2;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8;
|
||||
x_3 = 1;
|
||||
x_4 = l_List_toStringAux___main___at_Lean_Meta_caseValueAux___spec__3(x_3, x_1);
|
||||
x_5 = l_List_repr___rarg___closed__2;
|
||||
x_6 = lean_string_append(x_5, x_4);
|
||||
lean_dec(x_4);
|
||||
x_7 = l_List_repr___rarg___closed__3;
|
||||
x_8 = lean_string_append(x_6, x_7);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_caseValueAux___lambda__1___closed__1() {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -1022,7 +1112,7 @@ _start:
|
|||
{
|
||||
lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8;
|
||||
x_3 = l_Lean_Meta_FVarSubst_domain(x_1);
|
||||
x_4 = l_List_toString___at_Lean_Meta_substCore___spec__1(x_3);
|
||||
x_4 = l_List_toString___at_Lean_Meta_caseValueAux___spec__2(x_3);
|
||||
x_5 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_5, 0, x_4);
|
||||
x_6 = lean_alloc_ctor(0, 1, 0);
|
||||
|
|
@ -1434,7 +1524,7 @@ x_73 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Lean_MonadLCtx__
|
|||
lean_closure_set(x_73, 0, x_71);
|
||||
lean_closure_set(x_73, 1, x_72);
|
||||
lean_inc(x_68);
|
||||
x_74 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(x_68, x_73, x_7, x_8, x_9, x_10, x_65);
|
||||
x_74 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(x_68, x_73, x_7, x_8, x_9, x_10, x_65);
|
||||
if (lean_obj_tag(x_74) == 0)
|
||||
{
|
||||
uint8_t x_75;
|
||||
|
|
@ -1530,7 +1620,7 @@ x_95 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Lean_MonadLCtx__
|
|||
lean_closure_set(x_95, 0, x_93);
|
||||
lean_closure_set(x_95, 1, x_94);
|
||||
lean_inc(x_90);
|
||||
x_96 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(x_90, x_95, x_7, x_8, x_9, x_10, x_65);
|
||||
x_96 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(x_90, x_95, x_7, x_8, x_9, x_10, x_65);
|
||||
if (lean_obj_tag(x_96) == 0)
|
||||
{
|
||||
lean_object* x_97; lean_object* x_98; lean_object* x_99; lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103;
|
||||
|
|
@ -1827,10 +1917,20 @@ lean_closure_set(x_12, 4, x_5);
|
|||
x_13 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Lean_MonadLCtx___spec__2___rarg), 7, 2);
|
||||
lean_closure_set(x_13, 0, x_11);
|
||||
lean_closure_set(x_13, 1, x_12);
|
||||
x_14 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(x_1, x_13, x_6, x_7, x_8, x_9, x_10);
|
||||
x_14 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(x_1, x_13, x_6, x_7, x_8, x_9, x_10);
|
||||
return x_14;
|
||||
}
|
||||
}
|
||||
lean_object* l_List_toStringAux___main___at_Lean_Meta_caseValueAux___spec__3___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_3; lean_object* x_4;
|
||||
x_3 = lean_unbox(x_1);
|
||||
lean_dec(x_1);
|
||||
x_4 = l_List_toStringAux___main___at_Lean_Meta_caseValueAux___spec__3(x_3, x_2);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_caseValueAux___lambda__1___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
|
|
|
|||
36
stage0/stdlib/Lean/Meta/Match/Match.c
generated
36
stage0/stdlib/Lean/Meta/Match/Match.c
generated
|
|
@ -28,6 +28,7 @@ lean_object* l_Lean_Meta_isMatcher___boxed(lean_object*, lean_object*, lean_obje
|
|||
lean_object* l___private_Lean_Meta_Match_Match_37__traceStep(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_set(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_foldr___main___at___private_Lean_Meta_Match_Match_14__isValueTransition___spec__1___boxed(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__1;
|
||||
lean_object* l_List_map___main___at___private_Lean_Meta_Match_Match_27__processConstructor___spec__5(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_Match_mkMatcher___lambda__5(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_Match_8__hasValPattern___boxed(lean_object*);
|
||||
|
|
@ -90,6 +91,7 @@ lean_object* l_List_map___main___at_Lean_Meta_Match_Alt_applyFVarSubst___spec__1
|
|||
lean_object* l___private_Lean_Meta_Match_Match_42__updateAlts___main___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_List_filterAux___main___at___private_Lean_Meta_Match_Match_31__processValue___spec__4(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_Match_32__collectArraySizes(lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__2;
|
||||
lean_object* l_List_map___main___at_Lean_Meta_Match_Alt_applyFVarSubst___spec__2(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_Match_Unify_assign___lambda__3___closed__2;
|
||||
lean_object* l_List_map___main___at___private_Lean_Meta_Match_Match_31__processValue___spec__5___boxed(lean_object*, lean_object*);
|
||||
|
|
@ -414,7 +416,6 @@ lean_object* l_Lean_Meta_isMatcher(lean_object*, lean_object*, lean_object*, lea
|
|||
lean_object* l___private_Lean_Meta_Match_Match_43__regTraceClasses(lean_object*);
|
||||
extern lean_object* l_List_reprAux___main___rarg___closed__1;
|
||||
lean_object* l_Lean_Meta_Match_Pattern_toMessageData___main___closed__4;
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_Match_processInaccessibleAsCtor___lambda__1___boxed(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_Lean_AddMessageContext___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Std_AssocList_find_x3f___main___at_Lean_Meta_FVarSubst_find_x3f___spec__1(lean_object*, lean_object*);
|
||||
|
|
@ -550,6 +551,7 @@ lean_object* l_Lean_LocalDecl_type(lean_object*);
|
|||
lean_object* l_List_foldr___main___at___private_Lean_Meta_Match_Match_12__isVariableTransition___spec__1___boxed(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_Match_39__throwNonSupported___closed__1;
|
||||
lean_object* l_Lean_Meta_Match_Alt_toMessageData___closed__4;
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_Match_Extension_extension___elambda__4(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_get(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_Match_38__traceState___closed__2;
|
||||
|
|
@ -714,6 +716,7 @@ extern lean_object* l_Lean_registerPersistentEnvExtensionUnsafe___rarg___closed_
|
|||
lean_object* l___private_Lean_Meta_Match_Match_2__withAltsAux(lean_object*);
|
||||
lean_object* l_Lean_Meta_MatcherApp_addArg___lambda__1___closed__3;
|
||||
lean_object* l_Std_HashSetImp_contains___at_Lean_Meta_Match_mkMatcher___spec__9___boxed(lean_object*, lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Cases_0__Lean_Meta_throwInductiveTypeExpected___rarg___closed__1;
|
||||
lean_object* l_Lean_indentD(lean_object*);
|
||||
lean_object* l_Lean_Meta_MatcherApp_addArg___lambda__1___closed__5;
|
||||
lean_object* l___private_Lean_Meta_Match_Match_1__checkNumPatterns___closed__2;
|
||||
|
|
@ -751,7 +754,6 @@ lean_object* l_Lean_Meta_Match_MatcherInfo_numAlts(lean_object*);
|
|||
lean_object* l_Lean_Meta_mkForallFVars___at___private_Lean_Meta_InferType_6__inferLambdaType___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Match_Match_17__processSkipInaccessible(lean_object*);
|
||||
lean_object* l_List_toArrayAux___main___rarg(lean_object*, lean_object*);
|
||||
extern lean_object* l___private_Lean_Meta_Tactic_Cases_1__throwInductiveTypeExpected___rarg___closed__3;
|
||||
extern lean_object* l_Nat_Inhabited;
|
||||
lean_object* l_Lean_Meta_Match_Unify_assign___lambda__3___closed__3;
|
||||
lean_object* l___private_Lean_Meta_Match_Match_31__processValue___lambda__1___closed__2;
|
||||
|
|
@ -4003,7 +4005,7 @@ lean_object* x_8; lean_object* x_9;
|
|||
x_8 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_8);
|
||||
lean_dec(x_1);
|
||||
x_9 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(x_8, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
x_9 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(x_8, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
return x_9;
|
||||
}
|
||||
}
|
||||
|
|
@ -8590,6 +8592,26 @@ return x_19;
|
|||
}
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l___private_Lean_Meta_Tactic_Cases_0__Lean_Meta_throwInductiveTypeExpected___rarg___closed__1;
|
||||
x_2 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__1;
|
||||
x_2 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -8609,7 +8631,7 @@ x_9 = lean_ctor_get(x_7, 1);
|
|||
lean_inc(x_9);
|
||||
lean_dec(x_7);
|
||||
x_10 = l_Lean_indentExpr(x_1);
|
||||
x_11 = l___private_Lean_Meta_Tactic_Cases_1__throwInductiveTypeExpected___rarg___closed__3;
|
||||
x_11 = l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__2;
|
||||
x_12 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_12, 0, x_11);
|
||||
lean_ctor_set(x_12, 1, x_10);
|
||||
|
|
@ -14636,7 +14658,7 @@ lean_inc(x_9);
|
|||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
x_38 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(x_20, x_37, x_6, x_7, x_8, x_9, x_10);
|
||||
x_38 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(x_20, x_37, x_6, x_7, x_8, x_9, x_10);
|
||||
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;
|
||||
|
|
@ -27887,6 +27909,10 @@ l___private_Lean_Meta_Match_Match_2__withAltsAux___main___rarg___closed__2 = _in
|
|||
lean_mark_persistent(l___private_Lean_Meta_Match_Match_2__withAltsAux___main___rarg___closed__2);
|
||||
l___private_Lean_Meta_Match_Match_2__withAltsAux___main___rarg___closed__3 = _init_l___private_Lean_Meta_Match_Match_2__withAltsAux___main___rarg___closed__3();
|
||||
lean_mark_persistent(l___private_Lean_Meta_Match_Match_2__withAltsAux___main___rarg___closed__3);
|
||||
l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__1 = _init_l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__1();
|
||||
lean_mark_persistent(l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__1);
|
||||
l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__2 = _init_l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__2();
|
||||
lean_mark_persistent(l___private_Lean_Meta_Match_Match_21__throwInductiveTypeExpected___rarg___closed__2);
|
||||
l_Lean_Meta_Match_Unify_assign___lambda__1___closed__1 = _init_l_Lean_Meta_Match_Unify_assign___lambda__1___closed__1();
|
||||
lean_mark_persistent(l_Lean_Meta_Match_Unify_assign___lambda__1___closed__1);
|
||||
l_Lean_Meta_Match_Unify_assign___lambda__1___closed__2 = _init_l_Lean_Meta_Match_Unify_assign___lambda__1___closed__2();
|
||||
|
|
|
|||
2734
stage0/stdlib/Lean/Meta/Tactic/Apply.c
generated
2734
stage0/stdlib/Lean/Meta/Tactic/Apply.c
generated
File diff suppressed because it is too large
Load diff
820
stage0/stdlib/Lean/Meta/Tactic/Assert.c
generated
820
stage0/stdlib/Lean/Meta/Tactic/Assert.c
generated
File diff suppressed because it is too large
Load diff
1704
stage0/stdlib/Lean/Meta/Tactic/Assumption.c
generated
1704
stage0/stdlib/Lean/Meta/Tactic/Assumption.c
generated
File diff suppressed because it is too large
Load diff
12666
stage0/stdlib/Lean/Meta/Tactic/Cases.c
generated
12666
stage0/stdlib/Lean/Meta/Tactic/Cases.c
generated
File diff suppressed because it is too large
Load diff
893
stage0/stdlib/Lean/Meta/Tactic/Clear.c
generated
893
stage0/stdlib/Lean/Meta/Tactic/Clear.c
generated
File diff suppressed because it is too large
Load diff
219
stage0/stdlib/Lean/Meta/Tactic/FVarSubst.c
generated
219
stage0/stdlib/Lean/Meta/Tactic/FVarSubst.c
generated
|
|
@ -31,6 +31,8 @@ lean_object* l_Lean_Meta_FVarSubst_domain___boxed(lean_object*);
|
|||
lean_object* l_Lean_Meta_FVarSubst_isEmpty___boxed(lean_object*);
|
||||
lean_object* l_Std_AssocList_mapVal___main___rarg(lean_object*, lean_object*);
|
||||
uint8_t l_Lean_Meta_FVarSubst_any(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_LocalDecl_applyFVarSubst_match__1(lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_apply_match__2___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_apply(lean_object*, lean_object*);
|
||||
lean_object* l_Std_AssocList_find_x3f___main___at_Lean_Meta_FVarSubst_find_x3f___spec__1(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Expr_ReplaceImpl_replaceUnsafeM___main___at_Lean_Meta_FVarSubst_apply___spec__1(lean_object*, size_t, lean_object*, lean_object*);
|
||||
|
|
@ -40,18 +42,22 @@ lean_object* l_Lean_Meta_FVarSubst_insert___lambda__1(lean_object*, lean_object*
|
|||
uint8_t l_Lean_Meta_FVarSubst_contains(lean_object*, lean_object*);
|
||||
lean_object* lean_expr_update_let(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_mkFVar(lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_map___default;
|
||||
uint8_t l_Lean_Expr_Data_binderInfo(uint64_t);
|
||||
lean_object* l_Lean_LocalDecl_applyFVarSubst___boxed(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_contains___boxed(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Expr_replaceFVarId(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_expr_update_proj(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_apply_match__2(lean_object*);
|
||||
uint8_t l_Std_AssocList_any___main___rarg(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_find_x3f(lean_object*, lean_object*);
|
||||
size_t l_USize_mod(size_t, size_t);
|
||||
lean_object* l_Lean_LocalDecl_applyFVarSubst_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_get(lean_object*, lean_object*);
|
||||
size_t lean_ptr_addr(lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_insert___lambda__1___boxed(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_empty;
|
||||
lean_object* l_Lean_Meta_FVarSubst_apply_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_insert(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_any___boxed(lean_object*, lean_object*);
|
||||
lean_object* lean_expr_update_lambda(lean_object*, uint8_t, lean_object*, lean_object*);
|
||||
|
|
@ -64,11 +70,22 @@ lean_object* l_Std_AssocList_erase___main___at_Lean_Meta_FVarSubst_erase___spec_
|
|||
lean_object* l_Std_AssocList_contains___main___at_Lean_Meta_FVarSubst_contains___spec__1___boxed(lean_object*, lean_object*);
|
||||
lean_object* lean_expr_update_app(lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_Lean_Expr_hasFVar(lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_get_match__1___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_get_match__1(lean_object*);
|
||||
lean_object* l_Lean_Meta_FVarSubst_apply_match__1(lean_object*);
|
||||
uint8_t l_Lean_Meta_FVarSubst_isEmpty(lean_object*);
|
||||
lean_object* l_Lean_LocalDecl_applyFVarSubst(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Expr_ReplaceImpl_replaceUnsafeM___main___at_Lean_Meta_FVarSubst_apply___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Expr_ReplaceImpl_initCache;
|
||||
lean_object* l_Lean_Expr_applyFVarSubst(lean_object*, lean_object*);
|
||||
static lean_object* _init_l_Lean_Meta_FVarSubst_map___default() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_box(0);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_FVarSubst_empty() {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -350,6 +367,37 @@ lean_dec(x_1);
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_FVarSubst_get_match__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_1) == 0)
|
||||
{
|
||||
lean_object* x_4; lean_object* x_5;
|
||||
lean_dec(x_3);
|
||||
x_4 = lean_box(0);
|
||||
x_5 = lean_apply_1(x_2, x_4);
|
||||
return x_5;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_6; lean_object* x_7;
|
||||
lean_dec(x_2);
|
||||
x_6 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_6);
|
||||
lean_dec(x_1);
|
||||
x_7 = lean_apply_1(x_3, x_6);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_FVarSubst_get_match__1(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = lean_alloc_closure((void*)(l_Lean_Meta_FVarSubst_get_match__1___rarg), 3, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_FVarSubst_get(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -381,6 +429,69 @@ lean_dec(x_1);
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_FVarSubst_apply_match__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_1) == 0)
|
||||
{
|
||||
lean_object* x_4; lean_object* x_5;
|
||||
lean_dec(x_3);
|
||||
x_4 = lean_box(0);
|
||||
x_5 = lean_apply_1(x_2, x_4);
|
||||
return x_5;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_6; lean_object* x_7;
|
||||
lean_dec(x_2);
|
||||
x_6 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_6);
|
||||
lean_dec(x_1);
|
||||
x_7 = lean_apply_1(x_3, x_6);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_FVarSubst_apply_match__1(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = lean_alloc_closure((void*)(l_Lean_Meta_FVarSubst_apply_match__1___rarg), 3, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_FVarSubst_apply_match__2___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_1) == 1)
|
||||
{
|
||||
lean_object* x_4; uint64_t x_5; lean_object* x_6; lean_object* x_7;
|
||||
lean_dec(x_3);
|
||||
x_4 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_4);
|
||||
x_5 = lean_ctor_get_uint64(x_1, sizeof(void*)*1);
|
||||
lean_dec(x_1);
|
||||
x_6 = lean_box_uint64(x_5);
|
||||
x_7 = lean_apply_2(x_2, x_4, x_6);
|
||||
return x_7;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_8;
|
||||
lean_dec(x_2);
|
||||
x_8 = lean_apply_1(x_3, x_1);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_FVarSubst_apply_match__2(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = lean_alloc_closure((void*)(l_Lean_Meta_FVarSubst_apply_match__2___rarg), 3, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Expr_ReplaceImpl_replaceUnsafeM___main___at_Lean_Meta_FVarSubst_apply___spec__1(lean_object* x_1, size_t x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -868,27 +979,43 @@ return x_165;
|
|||
lean_object* l_Lean_Meta_FVarSubst_apply(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_3;
|
||||
x_3 = l_Std_AssocList_isEmpty___rarg(x_1);
|
||||
uint8_t x_3; uint8_t x_9;
|
||||
x_9 = l_Std_AssocList_isEmpty___rarg(x_1);
|
||||
if (x_9 == 0)
|
||||
{
|
||||
uint8_t x_10;
|
||||
x_10 = l_Lean_Expr_hasFVar(x_2);
|
||||
if (x_10 == 0)
|
||||
{
|
||||
uint8_t x_11;
|
||||
x_11 = 1;
|
||||
x_3 = x_11;
|
||||
goto block_8;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_12;
|
||||
x_12 = 0;
|
||||
x_3 = x_12;
|
||||
goto block_8;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return x_2;
|
||||
}
|
||||
block_8:
|
||||
{
|
||||
if (x_3 == 0)
|
||||
{
|
||||
uint8_t x_4;
|
||||
x_4 = l_Lean_Expr_hasFVar(x_2);
|
||||
if (x_4 == 0)
|
||||
{
|
||||
return x_2;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8;
|
||||
x_5 = 8192;
|
||||
x_6 = l_Lean_Expr_ReplaceImpl_initCache;
|
||||
x_7 = l_Lean_Expr_ReplaceImpl_replaceUnsafeM___main___at_Lean_Meta_FVarSubst_apply___spec__1(x_1, x_5, x_2, x_6);
|
||||
x_8 = lean_ctor_get(x_7, 0);
|
||||
lean_inc(x_8);
|
||||
lean_dec(x_7);
|
||||
return x_8;
|
||||
}
|
||||
size_t x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7;
|
||||
x_4 = 8192;
|
||||
x_5 = l_Lean_Expr_ReplaceImpl_initCache;
|
||||
x_6 = l_Lean_Expr_ReplaceImpl_replaceUnsafeM___main___at_Lean_Meta_FVarSubst_apply___spec__1(x_1, x_4, x_2, x_5);
|
||||
x_7 = lean_ctor_get(x_6, 0);
|
||||
lean_inc(x_7);
|
||||
lean_dec(x_6);
|
||||
return x_7;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -896,6 +1023,7 @@ return x_2;
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Expr_ReplaceImpl_replaceUnsafeM___main___at_Lean_Meta_FVarSubst_apply___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -982,6 +1110,57 @@ x_4 = lean_box(x_3);
|
|||
return x_4;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_LocalDecl_applyFVarSubst_match__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_1) == 0)
|
||||
{
|
||||
lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; uint8_t x_8; lean_object* x_9; lean_object* x_10;
|
||||
lean_dec(x_3);
|
||||
x_4 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_4);
|
||||
x_5 = lean_ctor_get(x_1, 1);
|
||||
lean_inc(x_5);
|
||||
x_6 = lean_ctor_get(x_1, 2);
|
||||
lean_inc(x_6);
|
||||
x_7 = lean_ctor_get(x_1, 3);
|
||||
lean_inc(x_7);
|
||||
x_8 = lean_ctor_get_uint8(x_1, sizeof(void*)*4);
|
||||
lean_dec(x_1);
|
||||
x_9 = lean_box(x_8);
|
||||
x_10 = lean_apply_5(x_2, x_4, x_5, x_6, x_7, x_9);
|
||||
return x_10;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18;
|
||||
lean_dec(x_2);
|
||||
x_11 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_11);
|
||||
x_12 = lean_ctor_get(x_1, 1);
|
||||
lean_inc(x_12);
|
||||
x_13 = lean_ctor_get(x_1, 2);
|
||||
lean_inc(x_13);
|
||||
x_14 = lean_ctor_get(x_1, 3);
|
||||
lean_inc(x_14);
|
||||
x_15 = lean_ctor_get(x_1, 4);
|
||||
lean_inc(x_15);
|
||||
x_16 = lean_ctor_get_uint8(x_1, sizeof(void*)*5);
|
||||
lean_dec(x_1);
|
||||
x_17 = lean_box(x_16);
|
||||
x_18 = lean_apply_6(x_3, x_11, x_12, x_13, x_14, x_15, x_17);
|
||||
return x_18;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_LocalDecl_applyFVarSubst_match__1(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = lean_alloc_closure((void*)(l_Lean_LocalDecl_applyFVarSubst_match__1___rarg), 3, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_LocalDecl_applyFVarSubst(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -1115,6 +1294,8 @@ lean_dec_ref(res);
|
|||
res = initialize_Lean_Util_ReplaceExpr(lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
l_Lean_Meta_FVarSubst_map___default = _init_l_Lean_Meta_FVarSubst_map___default();
|
||||
lean_mark_persistent(l_Lean_Meta_FVarSubst_map___default);
|
||||
l_Lean_Meta_FVarSubst_empty = _init_l_Lean_Meta_FVarSubst_empty();
|
||||
lean_mark_persistent(l_Lean_Meta_FVarSubst_empty);
|
||||
return lean_io_result_mk_ok(lean_box(0));
|
||||
|
|
|
|||
862
stage0/stdlib/Lean/Meta/Tactic/Generalize.c
generated
862
stage0/stdlib/Lean/Meta/Tactic/Generalize.c
generated
File diff suppressed because it is too large
Load diff
12730
stage0/stdlib/Lean/Meta/Tactic/Induction.c
generated
12730
stage0/stdlib/Lean/Meta/Tactic/Induction.c
generated
File diff suppressed because it is too large
Load diff
2209
stage0/stdlib/Lean/Meta/Tactic/Injection.c
generated
2209
stage0/stdlib/Lean/Meta/Tactic/Injection.c
generated
File diff suppressed because it is too large
Load diff
2501
stage0/stdlib/Lean/Meta/Tactic/Intro.c
generated
2501
stage0/stdlib/Lean/Meta/Tactic/Intro.c
generated
File diff suppressed because it is too large
Load diff
2071
stage0/stdlib/Lean/Meta/Tactic/Replace.c
generated
2071
stage0/stdlib/Lean/Meta/Tactic/Replace.c
generated
File diff suppressed because it is too large
Load diff
418
stage0/stdlib/Lean/Meta/Tactic/Revert.c
generated
418
stage0/stdlib/Lean/Meta/Tactic/Revert.c
generated
|
|
@ -13,18 +13,21 @@
|
|||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
lean_object* l_Lean_Meta_revert___lambda__2___closed__1;
|
||||
lean_object* l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_set(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Expr_mvarId_x21(lean_object*);
|
||||
lean_object* l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_revert___lambda__2___closed__2;
|
||||
extern lean_object* l_Std_HashMap_inhabited___closed__1;
|
||||
lean_object* l_Lean_Meta_setMVarKind___at_Lean_Meta_revert___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__2(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_mkMVar(lean_object*);
|
||||
lean_object* l_Lean_MetavarContext_setMVarKind(lean_object*, lean_object*, uint8_t);
|
||||
lean_object* lean_st_ref_get(lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_LocalContext_getFVars___spec__1(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Basic_32__withMVarContextImp___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_ReaderT_bind___at_Lean_Meta_Lean_MonadLCtx___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_get_size(lean_object*);
|
||||
lean_object* l_Lean_Meta_revert___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Expr_getAppArgs___closed__1;
|
||||
lean_object* l_Lean_Meta_setMCtx___at___private_Lean_Meta_Basic_6__liftMkBindingM___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
|
|
@ -36,26 +39,27 @@ lean_object* lean_nat_sub(lean_object*, lean_object*);
|
|||
lean_object* l_Lean_Expr_fvarId_x21(lean_object*);
|
||||
lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_MetavarContext_MkBinding_elimMVarDeps(lean_object*, lean_object*, uint8_t, lean_object*);
|
||||
lean_object* l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_revert___spec__2(lean_object*, lean_object*);
|
||||
lean_object* lean_name_mk_string(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_revert(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_revert___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_Array_isEmpty___rarg(lean_object*);
|
||||
lean_object* l_Lean_Meta_revert___lambda__1(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_revert___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_revert___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_revert___lambda__1___closed__2;
|
||||
lean_object* l_Lean_Meta_revert___lambda__1___closed__1;
|
||||
lean_object* l_Lean_Meta_revert___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_revert___spec__5(lean_object*);
|
||||
lean_object* l_Lean_Meta_revert___lambda__2(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_setMVarKind___at_Lean_Meta_revert___spec__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_checkNotAssigned(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_revert___spec__5___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_mk_array(lean_object*, lean_object*);
|
||||
lean_object* l_unsafeCast(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_revert___spec__3(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarTag___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_setMVarTag(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__4(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_setMVarKind___at_Lean_Meta_revert___spec__1(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
|
|
@ -136,7 +140,106 @@ return x_30;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__2(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_revert___spec__2(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3; uint8_t x_4;
|
||||
x_3 = lean_array_get_size(x_2);
|
||||
x_4 = lean_nat_dec_lt(x_1, x_3);
|
||||
lean_dec(x_3);
|
||||
if (x_4 == 0)
|
||||
{
|
||||
lean_object* x_5;
|
||||
lean_dec(x_1);
|
||||
x_5 = x_2;
|
||||
return x_5;
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
x_6 = lean_array_fget(x_2, x_1);
|
||||
x_7 = lean_unsigned_to_nat(0u);
|
||||
x_8 = lean_array_fset(x_2, x_1, x_7);
|
||||
x_9 = x_6;
|
||||
x_10 = l_Lean_Expr_fvarId_x21(x_9);
|
||||
lean_dec(x_9);
|
||||
x_11 = lean_unsigned_to_nat(1u);
|
||||
x_12 = lean_nat_add(x_1, x_11);
|
||||
x_13 = x_10;
|
||||
x_14 = lean_array_fset(x_8, x_1, x_13);
|
||||
lean_dec(x_1);
|
||||
x_1 = x_12;
|
||||
x_2 = x_14;
|
||||
goto _start;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___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) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_2) == 5)
|
||||
{
|
||||
lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14;
|
||||
x_10 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_10);
|
||||
x_11 = lean_ctor_get(x_2, 1);
|
||||
lean_inc(x_11);
|
||||
lean_dec(x_2);
|
||||
x_12 = lean_array_set(x_3, x_4, x_11);
|
||||
x_13 = lean_unsigned_to_nat(1u);
|
||||
x_14 = lean_nat_sub(x_4, x_13);
|
||||
lean_dec(x_4);
|
||||
x_2 = x_10;
|
||||
x_3 = x_12;
|
||||
x_4 = x_14;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17; uint8_t x_18;
|
||||
lean_dec(x_4);
|
||||
x_16 = l_Lean_Expr_mvarId_x21(x_2);
|
||||
lean_dec(x_2);
|
||||
lean_inc(x_16);
|
||||
x_17 = l_Lean_Meta_setMVarTag(x_16, x_1, x_5, x_6, x_7, x_8, x_9);
|
||||
x_18 = !lean_is_exclusive(x_17);
|
||||
if (x_18 == 0)
|
||||
{
|
||||
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_19 = lean_ctor_get(x_17, 0);
|
||||
lean_dec(x_19);
|
||||
x_20 = x_3;
|
||||
x_21 = lean_unsigned_to_nat(0u);
|
||||
x_22 = l_Array_umapMAux___main___at_Lean_Meta_revert___spec__2(x_21, x_20);
|
||||
x_23 = x_22;
|
||||
x_24 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_24, 0, x_23);
|
||||
lean_ctor_set(x_24, 1, x_16);
|
||||
lean_ctor_set(x_17, 0, x_24);
|
||||
return x_17;
|
||||
}
|
||||
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_31;
|
||||
x_25 = lean_ctor_get(x_17, 1);
|
||||
lean_inc(x_25);
|
||||
lean_dec(x_17);
|
||||
x_26 = x_3;
|
||||
x_27 = lean_unsigned_to_nat(0u);
|
||||
x_28 = l_Array_umapMAux___main___at_Lean_Meta_revert___spec__2(x_27, x_26);
|
||||
x_29 = x_28;
|
||||
x_30 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_30, 0, x_29);
|
||||
lean_ctor_set(x_30, 1, x_16);
|
||||
x_31 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_31, 0, x_30);
|
||||
lean_ctor_set(x_31, 1, x_25);
|
||||
return x_31;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__4(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_9;
|
||||
|
|
@ -335,106 +438,82 @@ return x_70;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Array_umapMAux___main___at_Lean_Meta_revert___spec__3(lean_object* x_1, lean_object* x_2) {
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_revert___spec__5___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3; uint8_t x_4;
|
||||
x_3 = lean_array_get_size(x_2);
|
||||
x_4 = lean_nat_dec_lt(x_1, x_3);
|
||||
lean_dec(x_3);
|
||||
if (x_4 == 0)
|
||||
lean_object* x_8;
|
||||
x_8 = l___private_Lean_Meta_Basic_32__withMVarContextImp___rarg(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
if (lean_obj_tag(x_8) == 0)
|
||||
{
|
||||
lean_object* x_5;
|
||||
lean_dec(x_1);
|
||||
x_5 = x_2;
|
||||
return x_5;
|
||||
uint8_t x_9;
|
||||
x_9 = !lean_is_exclusive(x_8);
|
||||
if (x_9 == 0)
|
||||
{
|
||||
return x_8;
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
x_6 = lean_array_fget(x_2, x_1);
|
||||
x_7 = lean_unsigned_to_nat(0u);
|
||||
x_8 = lean_array_fset(x_2, x_1, x_7);
|
||||
x_9 = x_6;
|
||||
x_10 = l_Lean_Expr_fvarId_x21(x_9);
|
||||
lean_dec(x_9);
|
||||
x_11 = lean_unsigned_to_nat(1u);
|
||||
x_12 = lean_nat_add(x_1, x_11);
|
||||
x_13 = x_10;
|
||||
x_14 = lean_array_fset(x_8, x_1, x_13);
|
||||
lean_dec(x_1);
|
||||
x_1 = x_12;
|
||||
x_2 = x_14;
|
||||
goto _start;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__4(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) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_2) == 5)
|
||||
{
|
||||
lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14;
|
||||
x_10 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_10);
|
||||
x_11 = lean_ctor_get(x_2, 1);
|
||||
lean_object* x_10; lean_object* x_11; lean_object* x_12;
|
||||
x_10 = lean_ctor_get(x_8, 0);
|
||||
x_11 = lean_ctor_get(x_8, 1);
|
||||
lean_inc(x_11);
|
||||
lean_dec(x_2);
|
||||
x_12 = lean_array_set(x_3, x_4, x_11);
|
||||
x_13 = lean_unsigned_to_nat(1u);
|
||||
x_14 = lean_nat_sub(x_4, x_13);
|
||||
lean_dec(x_4);
|
||||
x_2 = x_10;
|
||||
x_3 = x_12;
|
||||
x_4 = x_14;
|
||||
goto _start;
|
||||
lean_inc(x_10);
|
||||
lean_dec(x_8);
|
||||
x_12 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_12, 0, x_10);
|
||||
lean_ctor_set(x_12, 1, x_11);
|
||||
return x_12;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17; uint8_t x_18;
|
||||
lean_dec(x_4);
|
||||
x_16 = l_Lean_Expr_mvarId_x21(x_2);
|
||||
lean_dec(x_2);
|
||||
lean_inc(x_16);
|
||||
x_17 = l_Lean_Meta_setMVarTag(x_16, x_1, x_5, x_6, x_7, x_8, x_9);
|
||||
x_18 = !lean_is_exclusive(x_17);
|
||||
if (x_18 == 0)
|
||||
uint8_t x_13;
|
||||
x_13 = !lean_is_exclusive(x_8);
|
||||
if (x_13 == 0)
|
||||
{
|
||||
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_19 = lean_ctor_get(x_17, 0);
|
||||
lean_dec(x_19);
|
||||
x_20 = x_3;
|
||||
x_21 = lean_unsigned_to_nat(0u);
|
||||
x_22 = l_Array_umapMAux___main___at_Lean_Meta_revert___spec__3(x_21, x_20);
|
||||
x_23 = x_22;
|
||||
x_24 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_24, 0, x_23);
|
||||
lean_ctor_set(x_24, 1, x_16);
|
||||
lean_ctor_set(x_17, 0, x_24);
|
||||
return x_17;
|
||||
return x_8;
|
||||
}
|
||||
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_31;
|
||||
x_25 = lean_ctor_get(x_17, 1);
|
||||
lean_inc(x_25);
|
||||
lean_dec(x_17);
|
||||
x_26 = x_3;
|
||||
x_27 = lean_unsigned_to_nat(0u);
|
||||
x_28 = l_Array_umapMAux___main___at_Lean_Meta_revert___spec__3(x_27, x_26);
|
||||
x_29 = x_28;
|
||||
x_30 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_30, 0, x_29);
|
||||
lean_ctor_set(x_30, 1, x_16);
|
||||
x_31 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_31, 0, x_30);
|
||||
lean_ctor_set(x_31, 1, x_25);
|
||||
return x_31;
|
||||
lean_object* x_14; lean_object* x_15; lean_object* x_16;
|
||||
x_14 = lean_ctor_get(x_8, 0);
|
||||
x_15 = lean_ctor_get(x_8, 1);
|
||||
lean_inc(x_15);
|
||||
lean_inc(x_14);
|
||||
lean_dec(x_8);
|
||||
x_16 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_16, 0, x_14);
|
||||
lean_ctor_set(x_16, 1, x_15);
|
||||
return x_16;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_revert___lambda__1___closed__1() {
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_revert___spec__5(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = lean_alloc_closure((void*)(l_Lean_Meta_withMVarContext___at_Lean_Meta_revert___spec__5___rarg), 7, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_revert___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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14;
|
||||
x_8 = lean_unsigned_to_nat(0u);
|
||||
x_9 = l_Lean_Expr_getAppNumArgsAux___main(x_2, x_8);
|
||||
x_10 = l_Lean_Expr_getAppArgs___closed__1;
|
||||
lean_inc(x_9);
|
||||
x_11 = lean_mk_array(x_9, x_10);
|
||||
x_12 = lean_unsigned_to_nat(1u);
|
||||
x_13 = lean_nat_sub(x_9, x_12);
|
||||
lean_dec(x_9);
|
||||
x_14 = l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__3(x_1, x_2, x_11, x_13, x_3, x_4, x_5, x_6, x_7);
|
||||
return x_14;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_revert___lambda__2___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -442,21 +521,21 @@ x_1 = lean_mk_string("revert");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_revert___lambda__1___closed__2() {
|
||||
static lean_object* _init_l_Lean_Meta_revert___lambda__2___closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = lean_box(0);
|
||||
x_2 = l_Lean_Meta_revert___lambda__1___closed__1;
|
||||
x_2 = l_Lean_Meta_revert___lambda__2___closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_revert___lambda__1(lean_object* x_1, lean_object* x_2, uint8_t 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* l_Lean_Meta_revert___lambda__2(lean_object* x_1, lean_object* x_2, uint8_t 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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_10; lean_object* x_11;
|
||||
x_10 = l_Lean_Meta_revert___lambda__1___closed__2;
|
||||
x_10 = l_Lean_Meta_revert___lambda__2___closed__2;
|
||||
lean_inc(x_1);
|
||||
x_11 = l_Lean_Meta_checkNotAssigned(x_1, x_10, x_5, x_6, x_7, x_8, x_9);
|
||||
if (lean_obj_tag(x_11) == 0)
|
||||
|
|
@ -477,10 +556,10 @@ x_18 = l_Array_umapMAux___main___at_Lean_LocalContext_getFVars___spec__1(x_17, x
|
|||
x_19 = x_18;
|
||||
lean_inc(x_1);
|
||||
x_20 = l_Lean_mkMVar(x_1);
|
||||
x_21 = l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__2(x_19, x_20, x_3, x_5, x_6, x_7, x_8, x_15);
|
||||
x_21 = l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__4(x_19, x_20, x_3, x_5, x_6, x_7, x_8, x_15);
|
||||
if (lean_obj_tag(x_21) == 0)
|
||||
{
|
||||
lean_object* x_22; lean_object* x_23; uint8_t x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32;
|
||||
lean_object* x_22; lean_object* x_23; uint8_t x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27;
|
||||
x_22 = lean_ctor_get(x_21, 0);
|
||||
lean_inc(x_22);
|
||||
x_23 = lean_ctor_get(x_21, 1);
|
||||
|
|
@ -491,73 +570,66 @@ x_25 = l_Lean_Meta_setMVarKind___at_Lean_Meta_revert___spec__1(x_1, x_24, x_5, x
|
|||
x_26 = lean_ctor_get(x_25, 1);
|
||||
lean_inc(x_26);
|
||||
lean_dec(x_25);
|
||||
x_27 = l_Lean_Expr_getAppNumArgsAux___main(x_22, x_17);
|
||||
x_28 = l_Lean_Expr_getAppArgs___closed__1;
|
||||
lean_inc(x_27);
|
||||
x_29 = lean_mk_array(x_27, x_28);
|
||||
x_30 = lean_unsigned_to_nat(1u);
|
||||
x_31 = lean_nat_sub(x_27, x_30);
|
||||
lean_dec(x_27);
|
||||
x_32 = l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__4(x_4, x_22, x_29, x_31, x_5, x_6, x_7, x_8, x_26);
|
||||
return x_32;
|
||||
x_27 = l_Lean_Meta_revert___lambda__1(x_4, x_22, x_5, x_6, x_7, x_8, x_26);
|
||||
return x_27;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_33; lean_object* x_34; uint8_t x_35; lean_object* x_36; uint8_t x_37;
|
||||
lean_object* x_28; lean_object* x_29; uint8_t x_30; lean_object* x_31; uint8_t x_32;
|
||||
lean_dec(x_4);
|
||||
x_33 = lean_ctor_get(x_21, 0);
|
||||
lean_inc(x_33);
|
||||
x_34 = lean_ctor_get(x_21, 1);
|
||||
lean_inc(x_34);
|
||||
x_28 = lean_ctor_get(x_21, 0);
|
||||
lean_inc(x_28);
|
||||
x_29 = lean_ctor_get(x_21, 1);
|
||||
lean_inc(x_29);
|
||||
lean_dec(x_21);
|
||||
x_35 = 2;
|
||||
x_36 = l_Lean_Meta_setMVarKind___at_Lean_Meta_revert___spec__1(x_1, x_35, x_5, x_6, x_7, x_8, x_34);
|
||||
x_37 = !lean_is_exclusive(x_36);
|
||||
if (x_37 == 0)
|
||||
x_30 = 2;
|
||||
x_31 = l_Lean_Meta_setMVarKind___at_Lean_Meta_revert___spec__1(x_1, x_30, x_5, x_6, x_7, x_8, x_29);
|
||||
x_32 = !lean_is_exclusive(x_31);
|
||||
if (x_32 == 0)
|
||||
{
|
||||
lean_object* x_38;
|
||||
x_38 = lean_ctor_get(x_36, 0);
|
||||
lean_dec(x_38);
|
||||
lean_ctor_set_tag(x_36, 1);
|
||||
lean_ctor_set(x_36, 0, x_33);
|
||||
return x_36;
|
||||
lean_object* x_33;
|
||||
x_33 = lean_ctor_get(x_31, 0);
|
||||
lean_dec(x_33);
|
||||
lean_ctor_set_tag(x_31, 1);
|
||||
lean_ctor_set(x_31, 0, x_28);
|
||||
return x_31;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_39; lean_object* x_40;
|
||||
x_39 = lean_ctor_get(x_36, 1);
|
||||
lean_inc(x_39);
|
||||
lean_dec(x_36);
|
||||
x_40 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_40, 0, x_33);
|
||||
lean_ctor_set(x_40, 1, x_39);
|
||||
return x_40;
|
||||
lean_object* x_34; lean_object* x_35;
|
||||
x_34 = lean_ctor_get(x_31, 1);
|
||||
lean_inc(x_34);
|
||||
lean_dec(x_31);
|
||||
x_35 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_35, 0, x_28);
|
||||
lean_ctor_set(x_35, 1, x_34);
|
||||
return x_35;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_41;
|
||||
uint8_t x_36;
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_41 = !lean_is_exclusive(x_11);
|
||||
if (x_41 == 0)
|
||||
x_36 = !lean_is_exclusive(x_11);
|
||||
if (x_36 == 0)
|
||||
{
|
||||
return x_11;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_42; lean_object* x_43; lean_object* x_44;
|
||||
x_42 = lean_ctor_get(x_11, 0);
|
||||
x_43 = lean_ctor_get(x_11, 1);
|
||||
lean_inc(x_43);
|
||||
lean_inc(x_42);
|
||||
lean_object* x_37; lean_object* x_38; lean_object* x_39;
|
||||
x_37 = lean_ctor_get(x_11, 0);
|
||||
x_38 = lean_ctor_get(x_11, 1);
|
||||
lean_inc(x_38);
|
||||
lean_inc(x_37);
|
||||
lean_dec(x_11);
|
||||
x_44 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_44, 0, x_42);
|
||||
lean_ctor_set(x_44, 1, x_43);
|
||||
return x_44;
|
||||
x_39 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_39, 0, x_37);
|
||||
lean_ctor_set(x_39, 1, x_38);
|
||||
return x_39;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -575,14 +647,14 @@ x_10 = lean_alloc_closure((void*)(l_Lean_Meta_getMVarTag___boxed), 6, 1);
|
|||
lean_closure_set(x_10, 0, x_1);
|
||||
x_11 = lean_box(x_3);
|
||||
lean_inc(x_1);
|
||||
x_12 = lean_alloc_closure((void*)(l_Lean_Meta_revert___lambda__1___boxed), 9, 3);
|
||||
x_12 = lean_alloc_closure((void*)(l_Lean_Meta_revert___lambda__2___boxed), 9, 3);
|
||||
lean_closure_set(x_12, 0, x_1);
|
||||
lean_closure_set(x_12, 1, x_2);
|
||||
lean_closure_set(x_12, 2, x_11);
|
||||
x_13 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Lean_MonadLCtx___spec__2___rarg), 7, 2);
|
||||
lean_closure_set(x_13, 0, x_10);
|
||||
lean_closure_set(x_13, 1, x_12);
|
||||
x_14 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(x_1, x_13, x_4, x_5, x_6, x_7, x_8);
|
||||
x_14 = l_Lean_Meta_withMVarContext___at_Lean_Meta_revert___spec__5___rarg(x_1, x_13, x_4, x_5, x_6, x_7, x_8);
|
||||
return x_14;
|
||||
}
|
||||
else
|
||||
|
|
@ -616,25 +688,11 @@ lean_dec(x_3);
|
|||
return x_9;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__2___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) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_9; lean_object* x_10;
|
||||
x_9 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_10 = l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__2(x_1, x_2, x_9, x_4, x_5, x_6, x_7, x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__4___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* l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_10;
|
||||
x_10 = l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
|
||||
x_10 = l_Lean_Expr_withAppAux___main___at_Lean_Meta_revert___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
|
|
@ -642,13 +700,39 @@ lean_dec(x_5);
|
|||
return x_10;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_revert___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
lean_object* l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__4___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) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_9; lean_object* x_10;
|
||||
x_9 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_10 = l_Lean_Meta_elimMVarDeps___at_Lean_Meta_revert___spec__4(x_1, x_2, x_9, x_4, x_5, x_6, x_7, x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_revert___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8;
|
||||
x_8 = l_Lean_Meta_revert___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_revert___lambda__2___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) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_10; lean_object* x_11;
|
||||
x_10 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_11 = l_Lean_Meta_revert___lambda__1(x_1, x_2, x_10, x_4, x_5, x_6, x_7, x_8, x_9);
|
||||
x_11 = l_Lean_Meta_revert___lambda__2(x_1, x_2, x_10, x_4, x_5, x_6, x_7, x_8, x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
|
|
@ -679,10 +763,10 @@ lean_dec_ref(res);
|
|||
res = initialize_Lean_Meta_Tactic_Util(lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
l_Lean_Meta_revert___lambda__1___closed__1 = _init_l_Lean_Meta_revert___lambda__1___closed__1();
|
||||
lean_mark_persistent(l_Lean_Meta_revert___lambda__1___closed__1);
|
||||
l_Lean_Meta_revert___lambda__1___closed__2 = _init_l_Lean_Meta_revert___lambda__1___closed__2();
|
||||
lean_mark_persistent(l_Lean_Meta_revert___lambda__1___closed__2);
|
||||
l_Lean_Meta_revert___lambda__2___closed__1 = _init_l_Lean_Meta_revert___lambda__2___closed__1();
|
||||
lean_mark_persistent(l_Lean_Meta_revert___lambda__2___closed__1);
|
||||
l_Lean_Meta_revert___lambda__2___closed__2 = _init_l_Lean_Meta_revert___lambda__2___closed__2();
|
||||
lean_mark_persistent(l_Lean_Meta_revert___lambda__2___closed__2);
|
||||
return lean_io_result_mk_ok(lean_box(0));
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
3163
stage0/stdlib/Lean/Meta/Tactic/Rewrite.c
generated
3163
stage0/stdlib/Lean/Meta/Tactic/Rewrite.c
generated
File diff suppressed because it is too large
Load diff
8017
stage0/stdlib/Lean/Meta/Tactic/Subst.c
generated
8017
stage0/stdlib/Lean/Meta/Tactic/Subst.c
generated
File diff suppressed because it is too large
Load diff
427
stage0/stdlib/Lean/Meta/Tactic/Util.c
generated
427
stage0/stdlib/Lean/Meta/Tactic/Util.c
generated
|
|
@ -18,12 +18,15 @@ lean_object* l_Lean_Meta_setMVarTag___boxed(lean_object*, lean_object*, lean_obj
|
|||
lean_object* l_Lean_extractMacroScopes(lean_object*);
|
||||
lean_object* l_Lean_registerTraceClass(lean_object*, lean_object*);
|
||||
lean_object* lean_erase_macro_scopes(lean_object*);
|
||||
lean_object* l_Lean_stringToMessageData(lean_object*);
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at_Lean_Meta_admit___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_appendTagSuffix(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_mkSorry___rarg___lambda__1___closed__3;
|
||||
extern lean_object* l_Lean_MessageData_ofList___closed__3;
|
||||
lean_object* l_Lean_Meta_throwTacticEx(lean_object*);
|
||||
lean_object* lean_io_error_to_string(lean_object*);
|
||||
lean_object* l_Lean_Meta_checkNotAssigned___closed__3;
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at_Lean_Meta_admit___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_mkMVar(lean_object*);
|
||||
lean_object* l_Lean_Meta_checkNotAssigned___closed__1;
|
||||
lean_object* l_Lean_Meta_getMVarTag(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_checkNotAssigned___closed__2;
|
||||
|
|
@ -33,6 +36,7 @@ lean_object* l_ReaderT_bind___at_Lean_Meta_Lean_MonadLCtx___spec__2___rarg(lean_
|
|||
lean_object* l_Lean_MetavarContext_setMVarUserName(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__3;
|
||||
lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__1;
|
||||
extern lean_object* l_String_splitAux___main___closed__1;
|
||||
lean_object* l___private_Lean_Meta_InferType_4__getLevelImp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_throwTacticEx___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__2;
|
||||
|
|
@ -40,7 +44,9 @@ lean_object* l_Lean_Meta_checkNotAssigned___boxed(lean_object*, lean_object*, le
|
|||
extern lean_object* l___private_Lean_Meta_Basic_1__regTraceClasses___closed__2;
|
||||
lean_object* l_Lean_Meta_admit___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_appendTag(lean_object*, lean_object*);
|
||||
extern lean_object* l___private_Lean_Data_Format_10__pushNewline___closed__1;
|
||||
lean_object* l_Lean_Meta_ppGoal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_metavar_ctx_is_expr_assigned(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_LocalContext_Inhabited___closed__2;
|
||||
lean_object* l_Lean_ppGoal(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__4;
|
||||
|
|
@ -48,44 +54,139 @@ lean_object* l_Lean_Meta_getMVarType(lean_object*, lean_object*, lean_object*, l
|
|||
lean_object* lean_st_ref_take(lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Basic_4__mkFreshExprMVarImpl(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Name_append___main(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_isExprMVarAssigned___at___private_Lean_Meta_SynthInstance_11__synthPendingImp___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at_Lean_Meta_getMVarTag___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_mkSorry___at_Lean_Meta_admit___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Tactic_Util_1__regTraceClasses(lean_object*);
|
||||
lean_object* l_Lean_Meta_isExprMVarAssigned___at_Lean_Meta_checkNotAssigned___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_name_mk_string(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarType___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at_Lean_Meta_isReadOnlyExprMVar___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_MetavarContext_assignExpr(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3(lean_object*);
|
||||
extern lean_object* l_Lean_throwUnknownConstant___rarg___closed__5;
|
||||
lean_object* l_Lean_Meta_admit___closed__1;
|
||||
lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
lean_object* l_Lean_Meta_admit___lambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_mkFreshExprSyntheticOpaqueMVar___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_appendTagSuffix___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_admit___closed__2;
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_throwTacticEx___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_getMVarDecl___rarg___lambda__1___closed__3;
|
||||
lean_object* l_Lean_Meta_checkNotAssigned(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_isExprMVarAssigned___at_Lean_Meta_checkNotAssigned___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_MacroScopesView_review(lean_object*);
|
||||
lean_object* l_Lean_Meta_admit(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_admit___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at_Lean_Meta_getMVarTag___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_metavar_ctx_find_decl(lean_object*, lean_object*);
|
||||
lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2(lean_object*);
|
||||
extern lean_object* l_Lean_Meta_mkSorry___rarg___lambda__1___closed__4;
|
||||
lean_object* l_Lean_Meta_mkSorry___at_Lean_Meta_admit___spec__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Meta_mkSorry___rarg___lambda__1___closed__2;
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at___private_Lean_Meta_InferType_4__getLevelImp___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_ppGoal___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__2;
|
||||
lean_object* l_Lean_Meta_mkFreshExprSyntheticOpaqueMVar(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
lean_object* l_Lean_mkAppB(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222_(lean_object*);
|
||||
lean_object* l_Lean_Meta_getMVarTag___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_setMVarTag(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_mkConst(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__2;
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at_Lean_Meta_getMVarTag___spec__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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; uint8_t x_8;
|
||||
x_7 = lean_st_ref_get(x_3, x_6);
|
||||
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;
|
||||
x_9 = lean_ctor_get(x_7, 0);
|
||||
x_10 = lean_ctor_get(x_7, 1);
|
||||
x_11 = lean_ctor_get(x_9, 0);
|
||||
lean_inc(x_11);
|
||||
lean_dec(x_9);
|
||||
lean_inc(x_1);
|
||||
x_12 = lean_metavar_ctx_find_decl(x_11, x_1);
|
||||
if (lean_obj_tag(x_12) == 0)
|
||||
{
|
||||
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_object* x_19;
|
||||
lean_free_object(x_7);
|
||||
x_13 = l_Lean_mkMVar(x_1);
|
||||
x_14 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_14, 0, x_13);
|
||||
x_15 = l_Lean_Meta_getMVarDecl___rarg___lambda__1___closed__3;
|
||||
x_16 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_16, 0, x_15);
|
||||
lean_ctor_set(x_16, 1, x_14);
|
||||
x_17 = l_Lean_throwUnknownConstant___rarg___closed__5;
|
||||
x_18 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_16);
|
||||
lean_ctor_set(x_18, 1, x_17);
|
||||
x_19 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_18, x_2, x_3, x_4, x_5, x_10);
|
||||
return x_19;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_20;
|
||||
lean_dec(x_1);
|
||||
x_20 = lean_ctor_get(x_12, 0);
|
||||
lean_inc(x_20);
|
||||
lean_dec(x_12);
|
||||
lean_ctor_set(x_7, 0, x_20);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24;
|
||||
x_21 = lean_ctor_get(x_7, 0);
|
||||
x_22 = lean_ctor_get(x_7, 1);
|
||||
lean_inc(x_22);
|
||||
lean_inc(x_21);
|
||||
lean_dec(x_7);
|
||||
x_23 = lean_ctor_get(x_21, 0);
|
||||
lean_inc(x_23);
|
||||
lean_dec(x_21);
|
||||
lean_inc(x_1);
|
||||
x_24 = lean_metavar_ctx_find_decl(x_23, x_1);
|
||||
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;
|
||||
x_25 = l_Lean_mkMVar(x_1);
|
||||
x_26 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_26, 0, x_25);
|
||||
x_27 = l_Lean_Meta_getMVarDecl___rarg___lambda__1___closed__3;
|
||||
x_28 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_28, 0, x_27);
|
||||
lean_ctor_set(x_28, 1, x_26);
|
||||
x_29 = l_Lean_throwUnknownConstant___rarg___closed__5;
|
||||
x_30 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_30, 0, x_28);
|
||||
lean_ctor_set(x_30, 1, x_29);
|
||||
x_31 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_30, x_2, x_3, x_4, x_5, x_22);
|
||||
return x_31;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_32; lean_object* x_33;
|
||||
lean_dec(x_1);
|
||||
x_32 = lean_ctor_get(x_24, 0);
|
||||
lean_inc(x_32);
|
||||
lean_dec(x_24);
|
||||
x_33 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_33, 0, x_32);
|
||||
lean_ctor_set(x_33, 1, x_22);
|
||||
return x_33;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_getMVarTag(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Meta_getMVarDecl___at_Lean_Meta_isReadOnlyExprMVar___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
x_7 = l_Lean_Meta_getMVarDecl___at_Lean_Meta_getMVarTag___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
if (lean_obj_tag(x_7) == 0)
|
||||
{
|
||||
uint8_t x_8;
|
||||
|
|
@ -141,6 +242,18 @@ return x_18;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_getMVarDecl___at_Lean_Meta_getMVarTag___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Meta_getMVarDecl___at_Lean_Meta_getMVarTag___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_getMVarTag___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -377,36 +490,33 @@ _start:
|
|||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Meta_throwTacticEx___rarg___closed__1;
|
||||
x_2 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_throwTacticEx___rarg___closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Meta_throwTacticEx___rarg___closed__2;
|
||||
x_2 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_throwTacticEx___rarg___closed__4() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string("' failed, ");
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_throwTacticEx___rarg___closed__4() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Meta_throwTacticEx___rarg___closed__3;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_throwTacticEx___rarg___closed__5() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Meta_throwTacticEx___rarg___closed__4;
|
||||
x_2 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
x_1 = l___private_Lean_Data_Format_10__pushNewline___closed__1;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
|
|
@ -414,30 +524,29 @@ static lean_object* _init_l_Lean_Meta_throwTacticEx___rarg___closed__6() {
|
|||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Meta_throwTacticEx___rarg___closed__5;
|
||||
x_2 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
x_1 = l_String_splitAux___main___closed__1;
|
||||
x_2 = l_Lean_stringToMessageData(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_throwTacticEx___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20;
|
||||
lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22;
|
||||
x_10 = lean_alloc_ctor(4, 1, 0);
|
||||
lean_ctor_set(x_10, 0, x_1);
|
||||
x_11 = l_Lean_Meta_throwTacticEx___rarg___closed__3;
|
||||
x_11 = l_Lean_Meta_throwTacticEx___rarg___closed__2;
|
||||
x_12 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_12, 0, x_11);
|
||||
lean_ctor_set(x_12, 1, x_10);
|
||||
x_13 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_13 = l_Lean_Meta_throwTacticEx___rarg___closed__4;
|
||||
x_14 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_14, 0, x_12);
|
||||
lean_ctor_set(x_14, 1, x_13);
|
||||
x_15 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_15, 0, x_14);
|
||||
lean_ctor_set(x_15, 1, x_3);
|
||||
x_16 = l_Lean_MessageData_ofList___closed__3;
|
||||
x_16 = l_Lean_Meta_throwTacticEx___rarg___closed__5;
|
||||
x_17 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_17, 0, x_15);
|
||||
lean_ctor_set(x_17, 1, x_16);
|
||||
|
|
@ -446,8 +555,12 @@ lean_ctor_set(x_18, 0, x_2);
|
|||
x_19 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_19, 0, x_17);
|
||||
lean_ctor_set(x_19, 1, x_18);
|
||||
x_20 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_19, x_5, x_6, x_7, x_8, x_9);
|
||||
return x_20;
|
||||
x_20 = l_Lean_Meta_throwTacticEx___rarg___closed__6;
|
||||
x_21 = lean_alloc_ctor(10, 2, 0);
|
||||
lean_ctor_set(x_21, 0, x_19);
|
||||
lean_ctor_set(x_21, 1, x_20);
|
||||
x_22 = l_Lean_throwError___at_Lean_Meta_mkWHNFRef___spec__1___rarg(x_21, x_5, x_6, x_7, x_8, x_9);
|
||||
return x_22;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_throwTacticEx(lean_object* x_1) {
|
||||
|
|
@ -471,6 +584,44 @@ lean_dec(x_4);
|
|||
return x_10;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_isExprMVarAssigned___at_Lean_Meta_checkNotAssigned___spec__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) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; uint8_t x_8;
|
||||
x_7 = lean_st_ref_get(x_3, x_6);
|
||||
x_8 = !lean_is_exclusive(x_7);
|
||||
if (x_8 == 0)
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10; uint8_t x_11; lean_object* x_12;
|
||||
x_9 = lean_ctor_get(x_7, 0);
|
||||
x_10 = lean_ctor_get(x_9, 0);
|
||||
lean_inc(x_10);
|
||||
lean_dec(x_9);
|
||||
x_11 = lean_metavar_ctx_is_expr_assigned(x_10, x_1);
|
||||
x_12 = lean_box(x_11);
|
||||
lean_ctor_set(x_7, 0, x_12);
|
||||
return x_7;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18;
|
||||
x_13 = lean_ctor_get(x_7, 0);
|
||||
x_14 = lean_ctor_get(x_7, 1);
|
||||
lean_inc(x_14);
|
||||
lean_inc(x_13);
|
||||
lean_dec(x_7);
|
||||
x_15 = lean_ctor_get(x_13, 0);
|
||||
lean_inc(x_15);
|
||||
lean_dec(x_13);
|
||||
x_16 = lean_metavar_ctx_is_expr_assigned(x_15, x_1);
|
||||
x_17 = lean_box(x_16);
|
||||
x_18 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_18, 0, x_17);
|
||||
lean_ctor_set(x_18, 1, x_14);
|
||||
return x_18;
|
||||
}
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Meta_checkNotAssigned___closed__1() {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -504,7 +655,7 @@ _start:
|
|||
{
|
||||
lean_object* x_8; lean_object* x_9; uint8_t x_10;
|
||||
lean_inc(x_1);
|
||||
x_8 = l_Lean_Meta_isExprMVarAssigned___at___private_Lean_Meta_SynthInstance_11__synthPendingImp___spec__1(x_1, x_3, x_4, x_5, x_6, x_7);
|
||||
x_8 = l_Lean_Meta_isExprMVarAssigned___at_Lean_Meta_checkNotAssigned___spec__1(x_1, x_3, x_4, x_5, x_6, x_7);
|
||||
x_9 = lean_ctor_get(x_8, 0);
|
||||
lean_inc(x_9);
|
||||
x_10 = lean_unbox(x_9);
|
||||
|
|
@ -550,6 +701,18 @@ return x_20;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_isExprMVarAssigned___at_Lean_Meta_checkNotAssigned___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Meta_isExprMVarAssigned___at_Lean_Meta_checkNotAssigned___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_checkNotAssigned___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -566,7 +729,7 @@ lean_object* l_Lean_Meta_getMVarType(lean_object* x_1, lean_object* x_2, lean_ob
|
|||
_start:
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Meta_getMVarDecl___at_Lean_Meta_isReadOnlyExprMVar___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
x_7 = l_Lean_Meta_getMVarDecl___at_Lean_Meta_getMVarTag___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
if (lean_obj_tag(x_7) == 0)
|
||||
{
|
||||
uint8_t x_8;
|
||||
|
|
@ -749,7 +912,7 @@ lean_dec(x_2);
|
|||
return x_7;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1() {
|
||||
static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -757,21 +920,21 @@ x_1 = lean_mk_string("Tactic");
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__2() {
|
||||
static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l___private_Lean_Meta_Basic_1__regTraceClasses___closed__2;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1;
|
||||
x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1;
|
||||
x_3 = lean_name_mk_string(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
lean_object* l___private_Lean_Meta_Tactic_Util_1__regTraceClasses(lean_object* x_1) {
|
||||
lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222_(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2; lean_object* x_3;
|
||||
x_2 = l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__2;
|
||||
x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__2;
|
||||
x_3 = l_Lean_registerTraceClass(x_2, x_1);
|
||||
return x_3;
|
||||
}
|
||||
|
|
@ -874,7 +1037,86 @@ return x_34;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at_Lean_Meta_admit___spec__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; uint8_t x_11;
|
||||
x_8 = lean_st_ref_take(x_4, x_7);
|
||||
x_9 = lean_ctor_get(x_8, 0);
|
||||
lean_inc(x_9);
|
||||
x_10 = lean_ctor_get(x_8, 1);
|
||||
lean_inc(x_10);
|
||||
lean_dec(x_8);
|
||||
x_11 = !lean_is_exclusive(x_9);
|
||||
if (x_11 == 0)
|
||||
{
|
||||
lean_object* x_12; lean_object* x_13; lean_object* x_14; uint8_t x_15;
|
||||
x_12 = lean_ctor_get(x_9, 0);
|
||||
x_13 = l_Lean_MetavarContext_assignExpr(x_12, x_1, x_2);
|
||||
lean_ctor_set(x_9, 0, x_13);
|
||||
x_14 = lean_st_ref_set(x_4, x_9, x_10);
|
||||
x_15 = !lean_is_exclusive(x_14);
|
||||
if (x_15 == 0)
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17;
|
||||
x_16 = lean_ctor_get(x_14, 0);
|
||||
lean_dec(x_16);
|
||||
x_17 = lean_box(0);
|
||||
lean_ctor_set(x_14, 0, x_17);
|
||||
return x_14;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_18; lean_object* x_19; lean_object* x_20;
|
||||
x_18 = lean_ctor_get(x_14, 1);
|
||||
lean_inc(x_18);
|
||||
lean_dec(x_14);
|
||||
x_19 = lean_box(0);
|
||||
x_20 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_20, 0, x_19);
|
||||
lean_ctor_set(x_20, 1, x_18);
|
||||
return x_20;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30;
|
||||
x_21 = lean_ctor_get(x_9, 0);
|
||||
x_22 = lean_ctor_get(x_9, 1);
|
||||
x_23 = lean_ctor_get(x_9, 2);
|
||||
lean_inc(x_23);
|
||||
lean_inc(x_22);
|
||||
lean_inc(x_21);
|
||||
lean_dec(x_9);
|
||||
x_24 = l_Lean_MetavarContext_assignExpr(x_21, x_1, x_2);
|
||||
x_25 = lean_alloc_ctor(0, 3, 0);
|
||||
lean_ctor_set(x_25, 0, x_24);
|
||||
lean_ctor_set(x_25, 1, x_22);
|
||||
lean_ctor_set(x_25, 2, x_23);
|
||||
x_26 = lean_st_ref_set(x_4, x_25, x_10);
|
||||
x_27 = lean_ctor_get(x_26, 1);
|
||||
lean_inc(x_27);
|
||||
if (lean_is_exclusive(x_26)) {
|
||||
lean_ctor_release(x_26, 0);
|
||||
lean_ctor_release(x_26, 1);
|
||||
x_28 = x_26;
|
||||
} else {
|
||||
lean_dec_ref(x_26);
|
||||
x_28 = lean_box(0);
|
||||
}
|
||||
x_29 = lean_box(0);
|
||||
if (lean_is_scalar(x_28)) {
|
||||
x_30 = lean_alloc_ctor(0, 2, 0);
|
||||
} else {
|
||||
x_30 = x_28;
|
||||
}
|
||||
lean_ctor_set(x_30, 0, x_29);
|
||||
lean_ctor_set(x_30, 1, x_27);
|
||||
return x_30;
|
||||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8;
|
||||
|
|
@ -925,11 +1167,11 @@ return x_16;
|
|||
}
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2(lean_object* x_1) {
|
||||
lean_object* l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = lean_alloc_closure((void*)(l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg), 7, 0);
|
||||
x_2 = lean_alloc_closure((void*)(l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg), 7, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
|
|
@ -954,93 +1196,72 @@ lean_inc(x_4);
|
|||
x_12 = l_Lean_Meta_mkSorry___at_Lean_Meta_admit___spec__1(x_10, x_2, x_4, x_5, x_6, x_7, x_11);
|
||||
if (lean_obj_tag(x_12) == 0)
|
||||
{
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16;
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15;
|
||||
x_13 = lean_ctor_get(x_12, 0);
|
||||
lean_inc(x_13);
|
||||
x_14 = lean_ctor_get(x_12, 1);
|
||||
lean_inc(x_14);
|
||||
lean_dec(x_12);
|
||||
x_15 = l_Lean_Meta_assignExprMVar___at___private_Lean_Meta_InferType_4__getLevelImp___spec__3(x_1, x_13, x_4, x_5, x_6, x_7, x_14);
|
||||
x_15 = l_Lean_Meta_assignExprMVar___at_Lean_Meta_admit___spec__2(x_1, x_13, x_4, x_5, x_6, x_7, x_14);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
x_16 = !lean_is_exclusive(x_15);
|
||||
if (x_16 == 0)
|
||||
{
|
||||
lean_object* x_17; lean_object* x_18;
|
||||
x_17 = lean_ctor_get(x_15, 0);
|
||||
lean_dec(x_17);
|
||||
x_18 = lean_box(0);
|
||||
lean_ctor_set(x_15, 0, x_18);
|
||||
return x_15;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_19; lean_object* x_20; lean_object* x_21;
|
||||
x_19 = lean_ctor_get(x_15, 1);
|
||||
lean_inc(x_19);
|
||||
lean_dec(x_15);
|
||||
x_20 = lean_box(0);
|
||||
x_21 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_21, 0, x_20);
|
||||
lean_ctor_set(x_21, 1, x_19);
|
||||
return x_21;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_22;
|
||||
uint8_t x_16;
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_1);
|
||||
x_22 = !lean_is_exclusive(x_12);
|
||||
if (x_22 == 0)
|
||||
x_16 = !lean_is_exclusive(x_12);
|
||||
if (x_16 == 0)
|
||||
{
|
||||
return x_12;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_23; lean_object* x_24; lean_object* x_25;
|
||||
x_23 = lean_ctor_get(x_12, 0);
|
||||
x_24 = lean_ctor_get(x_12, 1);
|
||||
lean_inc(x_24);
|
||||
lean_inc(x_23);
|
||||
lean_object* x_17; lean_object* x_18; lean_object* x_19;
|
||||
x_17 = lean_ctor_get(x_12, 0);
|
||||
x_18 = lean_ctor_get(x_12, 1);
|
||||
lean_inc(x_18);
|
||||
lean_inc(x_17);
|
||||
lean_dec(x_12);
|
||||
x_25 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_23);
|
||||
lean_ctor_set(x_25, 1, x_24);
|
||||
return x_25;
|
||||
x_19 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_19, 0, x_17);
|
||||
lean_ctor_set(x_19, 1, x_18);
|
||||
return x_19;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_26;
|
||||
uint8_t x_20;
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_1);
|
||||
x_26 = !lean_is_exclusive(x_9);
|
||||
if (x_26 == 0)
|
||||
x_20 = !lean_is_exclusive(x_9);
|
||||
if (x_20 == 0)
|
||||
{
|
||||
return x_9;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_27; lean_object* x_28; lean_object* x_29;
|
||||
x_27 = lean_ctor_get(x_9, 0);
|
||||
x_28 = lean_ctor_get(x_9, 1);
|
||||
lean_inc(x_28);
|
||||
lean_inc(x_27);
|
||||
lean_object* x_21; lean_object* x_22; lean_object* x_23;
|
||||
x_21 = lean_ctor_get(x_9, 0);
|
||||
x_22 = lean_ctor_get(x_9, 1);
|
||||
lean_inc(x_22);
|
||||
lean_inc(x_21);
|
||||
lean_dec(x_9);
|
||||
x_29 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_29, 0, x_27);
|
||||
lean_ctor_set(x_29, 1, x_28);
|
||||
return x_29;
|
||||
x_23 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_23, 0, x_21);
|
||||
lean_ctor_set(x_23, 1, x_22);
|
||||
return x_23;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1080,7 +1301,7 @@ lean_closure_set(x_11, 1, x_10);
|
|||
x_12 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Lean_MonadLCtx___spec__2___rarg), 7, 2);
|
||||
lean_closure_set(x_12, 0, x_9);
|
||||
lean_closure_set(x_12, 1, x_11);
|
||||
x_13 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__2___rarg(x_1, x_12, x_3, x_4, x_5, x_6, x_7);
|
||||
x_13 = l_Lean_Meta_withMVarContext___at_Lean_Meta_admit___spec__3___rarg(x_1, x_12, x_3, x_4, x_5, x_6, x_7);
|
||||
return x_13;
|
||||
}
|
||||
}
|
||||
|
|
@ -1094,6 +1315,18 @@ x_9 = l_Lean_Meta_mkSorry___at_Lean_Meta_admit___spec__1(x_1, x_8, x_3, x_4, x_5
|
|||
return x_9;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_assignExprMVar___at_Lean_Meta_admit___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8;
|
||||
x_8 = l_Lean_Meta_assignExprMVar___at_Lean_Meta_admit___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
lean_object* l_Lean_Meta_admit___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -1154,11 +1387,11 @@ l_Lean_Meta_checkNotAssigned___closed__2 = _init_l_Lean_Meta_checkNotAssigned___
|
|||
lean_mark_persistent(l_Lean_Meta_checkNotAssigned___closed__2);
|
||||
l_Lean_Meta_checkNotAssigned___closed__3 = _init_l_Lean_Meta_checkNotAssigned___closed__3();
|
||||
lean_mark_persistent(l_Lean_Meta_checkNotAssigned___closed__3);
|
||||
l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1 = _init_l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1();
|
||||
lean_mark_persistent(l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__1);
|
||||
l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__2 = _init_l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__2();
|
||||
lean_mark_persistent(l___private_Lean_Meta_Tactic_Util_1__regTraceClasses___closed__2);
|
||||
res = l___private_Lean_Meta_Tactic_Util_1__regTraceClasses(lean_io_mk_world());
|
||||
l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1();
|
||||
lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__1);
|
||||
l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__2 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__2();
|
||||
lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222____closed__2);
|
||||
res = l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Util___hyg_222_(lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
l_Lean_Meta_admit___closed__1 = _init_l_Lean_Meta_admit___closed__1();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue