Skip to content

Commit d560041

Browse files
committed
Update to v4.29.0
1 parent 1f8a3b2 commit d560041

File tree

14 files changed

+338
-27
lines changed

14 files changed

+338
-27
lines changed

Auto/Embedding/LamBase.lean

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4094,7 +4094,6 @@ theorem LamWF.interp_bvarAppsRev
40944094
(pushLCtxsDep_substxs _ _ _ List.reverse_cons HList.reverse_cons)]
40954095
rw [interp_substLCtxTerm_rec
40964096
(pushLCtxs_append_singleton _ _ _) (pushLCtxsDep_append_singleton _ _ _)]
4097-
rw [LamWF.interp_substWF (wf':=wfAp)]
40984097
apply IH (LamWF.ofApp _ wft LamWF.bvarAppsRev_Aux)
40994098
simp only[interp]; apply HEq.trans (b:=LamSort.curry valPre lterm) <;> try rfl
41004099
case h₁ =>
@@ -4135,7 +4134,16 @@ theorem LamWF.interp_eqForallEFN'
41354134
enter [2]; rw [IsomType.eqForall HList.cons_IsomType]; rw [Prod.eqForall']
41364135
unfold HList.cons_IsomType; dsimp; enter [xs, x]
41374136
apply forall_congr; intro xs
4138-
rw [interp_app, interp_base, interp_lam, eq_of_heq (LamBaseTerm.interp_equiv _ _)]
4137+
let wf' : LamWF lval.toLamTyVal
4138+
⟨pushLCtx s (pushLCtxs ls lctx), t, LamSort.base LamBaseSort.prop⟩ := by
4139+
simpa [pushLCtxs_cons] using wf
4140+
have lhsRw :
4141+
(interp lval (pushLCtxs ls lctx) (pushLCtxsDep xs lctxTerm) wfMkF.fromMkForallEFN').down =
4142+
(interp lval (pushLCtxs ls lctx) (pushLCtxsDep xs lctxTerm) (LamWF.mkForallEF wf')).down := by
4143+
apply congrArg GLift.down
4144+
simpa using LamWF.interp_substWF
4145+
rw [lhsRw]
4146+
apply Eq.trans LamWF.interp_eqForallEF
41394147
apply forall_congr; intro x
41404148
apply congrArg; apply eq_of_heq; apply interp_heq <;> try rfl
41414149
case HLCtxTyEq => rw [pushLCtxs_cons]
@@ -4202,8 +4210,9 @@ theorem LamWF.interp_insertEVarAt_eIdx
42024210
let lval' := {lval with lamEVarTy := replaceAt ty pos lamEVarTy',
42034211
eVarVal := replaceAtDep val pos eVarVal'}
42044212
HEq (lwf.interp lval' lctxTy lctxTerm) val := by
4205-
cases lwf; simp only [interp, replaceAt, replaceAtDep]
4206-
rw [Nat.beq_refl]; rfl
4213+
cases lwf; unfold interp replaceAt replaceAtDep
4214+
simp only [replaceAt, id_eq, Lean.Elab.WF.paramLet, interp]
4215+
rw [Nat.beq_refl]
42074216

42084217
theorem LamWF.interp_eVarIrrelevance
42094218
(lval₁ : LamValuation.{u}) (lval₂ : LamValuation.{u})

Auto/Embedding/LamChecker.lean

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ section CVal
159159
∀ (n : Nat), ILLift.{u} ((lamILTy n).interp tyVal) :=
160160
fun n => ILLift.default ((lamILTy n).interp tyVal)
161161

162-
def CVal.toLamTyVal (cv : CVal.{u} levt) : LamTyVal :=
162+
noncomputable def CVal.toLamTyVal (cv : CVal.{u} levt) : LamTyVal :=
163163
fun n => ((cv.var.get? n).getD ⟨.base .prop, GLift.up False⟩).fst,
164164
fun n => ((cv.il.get? n).getD ⟨.base .prop, ILLift.default _⟩).fst,
165165
fun n => (levt.get? n).getD (.base .prop)⟩
@@ -173,15 +173,15 @@ section CVal
173173
def CPVal.toLamVarTy (cpv : CPVal.{u}) : Nat → LamSort :=
174174
fun n => ((cpv.var.get? n).getD ⟨.base .prop, GLift.up False⟩).fst
175175

176-
def CPVal.toLamILTy (cpv : CPVal.{u}) : Nat → LamSort :=
176+
noncomputable def CPVal.toLamILTy (cpv : CPVal.{u}) : Nat → LamSort :=
177177
fun n => ((cpv.il.get? n).getD ⟨.base .prop, ILLift.default _⟩).fst
178178

179-
def CPVal.toLamTyValWithLamEVarTy (cpv : CPVal.{u}) (levt : Nat → LamSort) : LamTyVal :=
179+
noncomputable def CPVal.toLamTyValWithLamEVarTy (cpv : CPVal.{u}) (levt : Nat → LamSort) : LamTyVal :=
180180
fun n => ((cpv.var.get? n).getD ⟨.base .prop, GLift.up False⟩).fst,
181181
fun n => ((cpv.il.get? n).getD ⟨.base .prop, ILLift.default _⟩).fst,
182182
levt⟩
183183

184-
def CPVal.toLamTyValEraseEtom (cpv : CPVal.{u}) : LamTyVal :=
184+
noncomputable def CPVal.toLamTyValEraseEtom (cpv : CPVal.{u}) : LamTyVal :=
185185
fun n => ((cpv.var.get? n).getD ⟨.base .prop, GLift.up False⟩).fst,
186186
fun n => ((cpv.il.get? n).getD ⟨.base .prop, ILLift.default _⟩).fst,
187187
fun _ => .base .prop⟩
@@ -422,7 +422,7 @@ abbrev importTablePSigmaβ (cpv : CPVal.{u}) (ie : ImportEntry) :=
422422
abbrev importTablePSigmaMk (cpv : CPVal.{u}) :=
423423
@PSigma.mk ImportEntry (importTablePSigmaβ cpv)
424424

425-
def ImportTable.importFacts (it : ImportTable cpv) : BinTree REntry :=
425+
noncomputable def ImportTable.importFacts (it : ImportTable cpv) : BinTree REntry :=
426426
it.mapOpt (fun ⟨ie, _⟩ =>
427427
match ie with
428428
| .valid p =>
@@ -2345,7 +2345,7 @@ theorem ChkSteps.run_correct
23452345
dsimp [ChkSteps.run]; apply BinTree.foldl_inv (fun (r : RTable) => ∃ eV', RTable.inv r ⟨cpv, eV'⟩) inv
23462346
intro r' (c, n) inv'; exact ChkStep.run_correct r' cpv inv' c n
23472347

2348-
def ChkSteps.runFromBeginning (cpv : CPVal.{u}) (it : ImportTable cpv) (cs : ChkSteps) :=
2348+
noncomputable def ChkSteps.runFromBeginning (cpv : CPVal.{u}) (it : ImportTable cpv) (cs : ChkSteps) :=
23492349
ChkSteps.run cpv.toLamVarTy cpv.toLamILTy ⟨it.importFacts, 0, .leaf⟩ cs
23502350

23512351
/--

Auto/Embedding/LamSystem.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ theorem LamValid.intro1H (H : LamValid lval lctx (.mkForallE s t)) :
522522
have ⟨wfF, hF⟩ := H
523523
have .ofApp _ (.ofBase (.ofForallE _)) wft := wfF
524524
⟨.mkForallEF (.ofApp _ (.bvarLift _ wft) .pushLCtx_ofBVar), fun lctxTerm => by
525-
simp only [LamWF.mkForallEF, LamWF.interp, LamBaseTerm.LamWF.interp]
525+
simp only [LamWF.mkForallEF]
526526
intro x; simp only [LamWF.pushLCtx_ofBVar, LamWF.interp, eq_mp_eq_cast, cast_eq, id_eq]
527527
apply Eq.mp _ (hF lctxTerm x); apply congrArg; rw [← LamWF.interp_bvarLift]⟩
528528
)

Auto/Embedding/LamTermInterp.lean

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,23 @@ structure State where
263263

264264
abbrev InterpM := StateRefT State MetaState.MetaStateM
265265

266-
#genMonadState InterpM
266+
def getSortFVars : InterpM (Array FVarId) := do
267+
return (← get).sortFVars
268+
269+
def setSortFVars (sortFVars : Array FVarId) : InterpM Unit := do
270+
modify fun s => { s with sortFVars := sortFVars }
271+
272+
def getSortMap : InterpM (Std.HashMap LamSort FVarId) := do
273+
return (← get).sortMap
274+
275+
def setSortMap (sortMap : Std.HashMap LamSort FVarId) : InterpM Unit := do
276+
modify fun s => { s with sortMap := sortMap }
277+
278+
def getLctxTyRev : InterpM (Array LamSort) := do
279+
return (← get).lctxTyRev
280+
281+
def setLctxTyRev (lctxTyRev : Array LamSort) : InterpM Unit := do
282+
modify fun s => { s with lctxTyRev := lctxTyRev }
267283

268284
def getLCtxTy! (idx : Nat) : InterpM LamSort := do
269285
let lctxTyRev ← getLctxTyRev

Auto/IR/SMT.lean

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -438,8 +438,7 @@ section
438438

439439
@[always_inline]
440440
instance : Monad (TransM ω φ) :=
441-
let i := inferInstanceAs (Monad (TransM ω φ));
442-
{ pure := i.pure, bind := i.bind }
441+
inferInstance
443442

444443
instance : Inhabited (TransM ω φ α) where
445444
default := fun _ => throw default
@@ -453,7 +452,41 @@ section
453452
@[inline] def TransM.run' (x : TransM ω φ α) (s : State ω φ := {}) : MetaM α :=
454453
Prod.fst <$> StateRefT'.run x s
455454

456-
#genMonadState (TransM ω φ)
455+
def getH2lMap : TransM ω φ (Std.HashMap ω String) := do
456+
return (← get).h2lMap
457+
458+
def setH2lMap (h2lMap : Std.HashMap ω String) : TransM ω φ Unit := do
459+
modify fun s => { s with h2lMap := h2lMap }
460+
461+
def getL2hMap : TransM ω φ (Std.HashMap String ω) := do
462+
return (← get).l2hMap
463+
464+
def setL2hMap (l2hMap : Std.HashMap String ω) : TransM ω φ Unit := do
465+
modify fun s => { s with l2hMap := l2hMap }
466+
467+
def getUsedNames : TransM ω φ (Std.HashMap String Nat) := do
468+
return (← get).usedNames
469+
470+
def setUsedNames (usedNames : Std.HashMap String Nat) : TransM ω φ Unit := do
471+
modify fun s => { s with usedNames := usedNames }
472+
473+
def getWfPredicatesMap : TransM ω φ (Std.HashMap φ (Option String)) := do
474+
return (← get).wfPredicatesMap
475+
476+
def setWfPredicatesMap (wfPredicatesMap : Std.HashMap φ (Option String)) : TransM ω φ Unit := do
477+
modify fun s => { s with wfPredicatesMap := wfPredicatesMap }
478+
479+
def getWfPredicatesInvMap : TransM ω φ (Std.HashMap String φ) := do
480+
return (← get).wfPredicatesInvMap
481+
482+
def setWfPredicatesInvMap (wfPredicatesInvMap : Std.HashMap String φ) : TransM ω φ Unit := do
483+
modify fun s => { s with wfPredicatesInvMap := wfPredicatesInvMap }
484+
485+
def getCommands : TransM ω φ (Array Command) := do
486+
return (← get).commands
487+
488+
def setCommands (commands : Array Command) : TransM ω φ Unit := do
489+
modify fun s => { s with commands := commands }
457490

458491
def getMapSize : TransM ω φ Nat := do
459492
let size := (← getH2lMap).size

Auto/Lib/MetaState.lean

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ structure SavedState where
1414
abbrev MetaStateM := StateRefT State CoreM
1515

1616
@[always_inline]
17-
instance : Monad MetaStateM := let i := inferInstanceAs (Monad MetaStateM); { pure := i.pure, bind := i.bind }
17+
instance : Monad MetaStateM := inferInstance
1818

1919
instance : MonadLCtx MetaStateM where
2020
getLCtx := return (← get).toContext.lctx
@@ -42,7 +42,17 @@ instance : MonadBacktrack SavedState MetaStateM where
4242
saveState := MetaState.saveState
4343
restoreState s := s.restore
4444

45-
#genMonadState MetaStateM
45+
def getToState : MetaStateM Meta.State := do
46+
return (← get).toState
47+
48+
def setToState (st : Meta.State) : MetaStateM Unit := do
49+
modify fun s => { s with toState := st }
50+
51+
def getToContext : MetaStateM Meta.Context := do
52+
return (← get).toContext
53+
54+
def setToContext (ctx : Meta.Context) : MetaStateM Unit := do
55+
modify fun s => { s with toContext := ctx }
4656

4757
def runMetaM (n : MetaM α) : MetaStateM α := do
4858
let s ← get

Auto/Lib/ToExprExtra.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ scoped instance : ToExpr Int where
2323
We require that `toExpr (self:=instExprToExprId (.const ``Nat [])) l₂ ≝ l₁`
2424
It is obvious that this shouldn't be marked as an `instance`
2525
-/
26+
@[reducible]
2627
def instExprToExprId (ty : Expr) : ToExpr Expr :=
2728
{ toExpr := id, toTypeExpr := ty}
2829

Auto/MathlibEmulator/ToLevel.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,12 @@ instance [ToLevel.{u}] : ToLevel.{u+1} where
3535
toLevel := .succ toLevel.{u}
3636

3737
/-- `ToLevel` for `max u v`. This is not an instance since it causes divergence. -/
38+
@[reducible]
3839
def ToLevel.max [ToLevel.{u}] [ToLevel.{v}] : ToLevel.{max u v} where
3940
toLevel := .max toLevel.{u} toLevel.{v}
4041

4142
/-- `ToLevel` for `imax u v`. This is not an instance since it causes divergence. -/
43+
@[reducible]
4244
def ToLevel.imax [ToLevel.{u}] [ToLevel.{v}] : ToLevel.{imax u v} where
4345
toLevel := .imax toLevel.{u} toLevel.{v}
4446

Auto/Translation/Inductive.lean

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,17 @@ structure CollectInduct.State where
8585

8686
abbrev IndCollectM := StateRefT CollectInduct.State MetaM
8787

88-
#genMonadState IndCollectM
88+
def getRecorded : IndCollectM (Std.HashMap Name (Array Expr)) := do
89+
return (← get).recorded
90+
91+
def setRecorded (recorded : Std.HashMap Name (Array Expr)) : IndCollectM Unit := do
92+
modify fun s => { s with recorded := recorded }
93+
94+
def getSis : IndCollectM (Array (Array SimpleIndVal)) := do
95+
return (← get).sis
96+
97+
def setSis (sis : Array (Array SimpleIndVal)) : IndCollectM Unit := do
98+
modify fun s => { s with sis := sis }
8999

90100
private def collectSimpleInduct
91101
(tyctor : Name) (lvls : List Level) (args : Array Expr) : MetaM SimpleIndVal := do

Auto/Translation/Lam2DAtomAsFVar.lean

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,44 @@ def ExternM.run (m : ExternM α) (s : State) : MetaStateM (α × State) :=
6464
def ExternM.run' (m : ExternM α) (s : State) : MetaStateM α :=
6565
StateRefT'.run' m s
6666

67-
#genMonadState ExternM
67+
def getTyVal : ExternM (Array (Expr × Level)) := do
68+
return (← get).tyVal
69+
70+
def getVarVal : ExternM (Array (Expr × LamSort)) := do
71+
return (← get).varVal
72+
73+
def getLamEVarTy : ExternM (Array LamSort) := do
74+
return (← get).lamEVarTy
75+
76+
def getAtomsToAbstract : ExternM (Array (FVarId × Expr)) := do
77+
return (← get).atomsToAbstract
78+
79+
def setAtomsToAbstract (atomsToAbstract : Array (FVarId × Expr)) : ExternM Unit := do
80+
modify fun s => { s with atomsToAbstract := atomsToAbstract }
81+
82+
def getEtomsToAbstract : ExternM (Array (FVarId × Nat)) := do
83+
return (← get).etomsToAbstract
84+
85+
def setEtomsToAbstract (etomsToAbstract : Array (FVarId × Nat)) : ExternM Unit := do
86+
modify fun s => { s with etomsToAbstract := etomsToAbstract }
87+
88+
def getTypeAtomFVars : ExternM (Std.HashMap Nat Expr) := do
89+
return (← get).typeAtomFVars
90+
91+
def setTypeAtomFVars (typeAtomFVars : Std.HashMap Nat Expr) : ExternM Unit := do
92+
modify fun s => { s with typeAtomFVars := typeAtomFVars }
93+
94+
def getTermAtomFVars : ExternM (Std.HashMap Nat Expr) := do
95+
return (← get).termAtomFVars
96+
97+
def setTermAtomFVars (termAtomFVars : Std.HashMap Nat Expr) : ExternM Unit := do
98+
modify fun s => { s with termAtomFVars := termAtomFVars }
99+
100+
def getEtomFVars : ExternM (Std.HashMap Nat Expr) := do
101+
return (← get).etomFVars
102+
103+
def setEtomFVars (etomFVars : Std.HashMap Nat Expr) : ExternM Unit := do
104+
modify fun s => { s with etomFVars := etomFVars }
68105

69106
def withTypeAtomsAsFVar (atoms : Array Nat) : ExternM Unit :=
70107
for atom in atoms do

0 commit comments

Comments
 (0)