Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 1b85e3c

Browse files
jcommelinJLimpergurkuddigama0
committed
chore(*): bump to lean-3.12.0 (#2681)
## Changes to bracket notation * `{a}` now requires an instance `has_singleton`; * `insert a ∅ = {a}` is called `insert_emptyc_eq`, provided by an `is_lawful_singleton` instance; * `a ∈ ({b} : set α)` is now defeq `a = b`, not `a = b ∨ false`; * `({a} : set α)` is no longer defeq `insert a ∅`; * `({a} : finset α)` now means `⟨⟨[a]⟩, _⟩` (used to be called `finset.singleton a`), not `insert a ∅`; * removed `finset.singleton`; * `{a, b}` is now `insert a {b}`, not `insert b {a}`. * `finset.univ : finset bool` is now `{tt, ff}`; * `(({a} : finset α) : set α)` is no longer defeq `{a}`. ## Tactic `norm_num` The interactive tactic `norm_num` was recently rewritten in Lean. The non-interactive `tactic.norm_num` has been removed in Lean 3.12 so that we can migrate the algebraic hierarchy to mathlib in 3.13. ## Tactic combinators leanprover-community/lean#212 renames a bunch of tactic combinators. We change to using the new names. ## Tactic `case` leanprover-community/lean#228 slightly changes the semantics of the `case` tactic. We fix the resulting breakage to be conform the new semantics. Co-authored-by: Jannis Limperg <jannis@limperg.de> Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: Mario Carneiro <di.gama@gmail.com>
1 parent f5f7a3c commit 1b85e3c

File tree

87 files changed

+378
-391
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+378
-391
lines changed

leanpkg.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "mathlib"
33
version = "0.1"
4-
lean_version = "leanprover-community/lean:3.11.0"
4+
lean_version = "leanprover-community/lean:3.12.0"
55
path = "src"
66

77
[dependencies]

src/algebra/big_operators.lean

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ eq.trans fold_singleton $ mul_one _
147147
@[to_additive]
148148
lemma prod_pair [decidable_eq α] {a b : α} (h : a ≠ b) :
149149
(∏ x in ({a, b} : finset α), f x) = f a * f b :=
150-
by simp [prod_insert (not_mem_singleton.2 h.symm), mul_comm]
150+
by rw [prod_insert (not_mem_singleton.2 h), prod_singleton]
151151

152152
@[simp, priority 1100] lemma prod_const_one : (∏ x in s, (1 : β)) = 1 :=
153153
by simp only [finset.prod, multiset.map_const, multiset.prod_repeat, one_pow]
@@ -358,7 +358,7 @@ by simp [prod_apply_ite _ _ (λ x, x)]
358358
begin
359359
rw ←finset.prod_filter,
360360
split_ifs;
361-
simp only [filter_eq, if_true, if_false, h, prod_empty, prod_singleton, insert_empty_eq_singleton],
361+
simp only [filter_eq, if_true, if_false, h, prod_empty, prod_singleton],
362362
end
363363

364364
/--
@@ -879,8 +879,8 @@ open_locale classical
879879
lemma prod_add (f g : α → β) (s : finset α) :
880880
∏ a in s, (f a + g a) = ∑ t in s.powerset, ((∏ a in t, f a) * (∏ a in (s \ t), g a)) :=
881881
calc ∏ a in s, (f a + g a)
882-
= ∏ a in s, ∑ p in ({false, true} : finset Prop), if p then f a else g a : by simp
883-
... = ∑ p in (s.pi (λ _, {false, true}) : finset (Π a ∈ s, Prop)),
882+
= ∏ a in s, ∑ p in ({true, false} : finset Prop), if p then f a else g a : by simp
883+
... = ∑ p in (s.pi (λ _, {true, false}) : finset (Π a ∈ s, Prop)),
884884
∏ a in s.attach, if p a.1 a.2 then f a.1 else g a.1 : prod_sum
885885
... = ∑ t in s.powerset, (∏ a in t, f a) * (∏ a in (s \ t), g a) : begin
886886
refine eq.symm (sum_bij (λ t _ a _, a ∈ t) _ _ _ _),
@@ -983,7 +983,7 @@ lemma sum_eq_zero_iff_of_nonpos : (∀x∈s, f x ≤ 0) → ((∑ x in s, f x) =
983983
@sum_eq_zero_iff_of_nonneg _ (order_dual β) _ _ _
984984

985985
lemma single_le_sum (hf : ∀x∈s, 0 ≤ f x) {a} (h : a ∈ s) : f a ≤ (∑ x in s, f x) :=
986-
have (singleton a).sum f ≤ (∑ x in s, f x),
986+
have ({a} : finset α).sum f ≤ (∑ x in s, f x),
987987
from sum_le_sum_of_subset_of_nonneg
988988
(λ x e, (mem_singleton.1 e).symm ▸ h) (λ x h _, hf x h),
989989
by rwa sum_singleton at this
@@ -1209,7 +1209,7 @@ multiset.induction_on s rfl
12091209
... = card (a :: s) :
12101210
begin
12111211
by_cases a ∈ s.to_finset,
1212-
{ have : (to_finset s).sum (λx, ite (x = a) 1 0) = (finset.singleton a).sum (λx, ite (x = a) 1 0),
1212+
{ have : (to_finset s).sum (λx, ite (x = a) 1 0) = ({a} : finset α).sum (λx, ite (x = a) 1 0),
12131213
{ apply (finset.sum_subset _ _).symm,
12141214
{ intros _ H, rwa mem_singleton.1 H },
12151215
{ exact λ _ _ H, if_neg (mt finset.mem_singleton.2 H) } },

src/algebra/classical_lie_algebras.lean

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,8 @@ namespace special_linear
4343

4444
/-- The special linear Lie algebra: square matrices of trace zero. -/
4545
def sl : lie_subalgebra R (matrix n n R) :=
46-
{ lie_mem := λ X Y _ _, by
47-
{ suffices : matrix.trace n R R ⁅X, Y⁆ = 0, apply (list.mem_pure _ 0).2 this,
48-
apply matrix_trace_commutator_zero, },
49-
..linear_map.ker (matrix.trace n R R) }
46+
{ lie_mem := λ X Y _ _, linear_map.mem_ker.2 $ matrix_trace_commutator_zero _ _ _ _,
47+
to_submodule := linear_map.ker (matrix.trace n R R) }
5048

5149
lemma sl_bracket (A B : sl n R) : ⁅A, B⁆.val = A.val ⬝ B.val - B.val ⬝ A.val := rfl
5250

src/algebra/direct_limit.lean

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -355,31 +355,34 @@ begin
355355
refine span_induction (ideal.quotient.eq_zero_iff_mem.1 H) _ _ _ _,
356356
{ rintros x (⟨i, j, hij, x, rfl⟩ | ⟨i, rfl⟩ | ⟨i, x, y, rfl⟩ | ⟨i, x, y, rfl⟩),
357357
{ refine ⟨j, {⟨i, x⟩, ⟨j, f i j hij x⟩}, _,
358-
is_supported_sub (is_supported_of.2 $ or.inl rfl) (is_supported_of.2 $ or.inr $ or.inl rfl), _⟩,
359-
{ rintros k (rfl | ⟨rfl | h⟩), refl, exact hij, cases h },
358+
is_supported_sub (is_supported_of.2 $ or.inr rfl) (is_supported_of.2 $ or.inl rfl), _⟩,
359+
{ rintros k (rfl | ⟨rfl | _⟩), exact hij, refl },
360360
{ rw [restriction_sub, lift_sub, restriction_of, dif_pos, restriction_of, dif_pos, lift_of, lift_of],
361361
dsimp only, rw directed_system.map_map f, exact sub_self _,
362-
{ left, refl }, { right, left, refl }, } },
363-
{ refine ⟨i, {⟨i, 1⟩}, _, is_supported_sub (is_supported_of.2 $ or.inl rfl) is_supported_one, _⟩,
364-
{ rintros k (rfl | h), refl, cases h },
362+
exacts [or.inr rfl, or.inl rfl] } },
363+
{ refine ⟨i, {⟨i, 1⟩}, _, is_supported_sub (is_supported_of.2 rfl) is_supported_one, _⟩,
364+
{ rintros k (rfl|h), refl },
365365
{ rw [restriction_sub, lift_sub, restriction_of, dif_pos, restriction_one, lift_of, lift_one],
366-
dsimp only, rw [is_ring_hom.map_one (f i i _), sub_self], exact _inst_7 i i _, { left, refl } } },
366+
dsimp only, rw [is_ring_hom.map_one (f i i _), sub_self], exacts [_inst_7 i i _, rfl] } },
367367
{ refine ⟨i, {⟨i, x+y⟩, ⟨i, x⟩, ⟨i, y⟩}, _,
368-
is_supported_sub (is_supported_of.2 $ or.inr $ or.inr $ or.inl rfl)
369-
(is_supported_add (is_supported_of.2 $ or.inr $ or.inl rfl) (is_supported_of.2 $ or.inl rfl)), _⟩,
370-
{ rintros k (rfl | ⟨rfl | ⟨rfl | hk⟩⟩), refl, refl, refl, cases hk },
368+
is_supported_sub (is_supported_of.2 $ or.inl rfl)
369+
(is_supported_add (is_supported_of.2 $ or.inr $ or.inl rfl)
370+
(is_supported_of.2 $ or.inr $ or.inr rfl)), _⟩,
371+
{ rintros k (rfl | ⟨rfl | ⟨rfl | hk⟩⟩); refl },
371372
{ rw [restriction_sub, restriction_add, restriction_of, restriction_of, restriction_of,
372373
dif_pos, dif_pos, dif_pos, lift_sub, lift_add, lift_of, lift_of, lift_of],
373374
dsimp only, rw is_ring_hom.map_add (f i i _), exact sub_self _,
374-
{ right, right, left, refl }, { apply_instance }, { left, refl }, { right, left, refl } } },
375+
exacts [or.inl rfl, by apply_instance, or.inr (or.inr rfl), or.inr (or.inl rfl)] } },
375376
{ refine ⟨i, {⟨i, x*y⟩, ⟨i, x⟩, ⟨i, y⟩}, _,
376-
is_supported_sub (is_supported_of.2 $ or.inr $ or.inr $ or.inl rfl)
377-
(is_supported_mul (is_supported_of.2 $ or.inr $ or.inl rfl) (is_supported_of.2 $ or.inl rfl)), _⟩,
378-
{ rintros k (rfl | ⟨rfl | ⟨rfl | hk⟩⟩), refl, refl, refl, cases hk },
377+
is_supported_sub (is_supported_of.2 $ or.inl rfl)
378+
(is_supported_mul (is_supported_of.2 $ or.inr $ or.inl rfl)
379+
(is_supported_of.2 $ or.inr $ or.inr rfl)), _⟩,
380+
{ rintros k (rfl | ⟨rfl | ⟨rfl | hk⟩⟩); refl },
379381
{ rw [restriction_sub, restriction_mul, restriction_of, restriction_of, restriction_of,
380382
dif_pos, dif_pos, dif_pos, lift_sub, lift_mul, lift_of, lift_of, lift_of],
381-
dsimp only, rw is_ring_hom.map_mul (f i i _), exact sub_self _,
382-
{ right, right, left, refl }, { apply_instance }, { left, refl }, { right, left, refl } } } },
383+
dsimp only, rw is_ring_hom.map_mul (f i i _),
384+
exacts [sub_self _, or.inl rfl, by apply_instance, or.inr (or.inr rfl),
385+
or.inr (or.inl rfl)] } } },
383386
{ refine nonempty.elim (by apply_instance) (assume ind : ι, _),
384387
refine ⟨ind, ∅, λ _, false.elim, is_supported_zero, _⟩,
385388
rw [restriction_zero, lift_zero] },

src/algebra/direct_sum.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ is_add_group_hom.map_neg _ x
130130
is_add_group_hom.map_sub _ x y
131131

132132
@[simp] lemma to_group_of (i) (x : β i) : to_group φ (of β i x) = φ i x :=
133-
(add_zero _).trans $ congr_arg (φ i) $ show (if H : i ∈ finset.singleton i then x else 0) = x,
133+
(add_zero _).trans $ congr_arg (φ i) $ show (if H : i ∈ ({i} : finset _) then x else 0) = x,
134134
from dif_pos $ finset.mem_singleton_self i
135135

136136
variables (ψ : direct_sum ι β → γ) [is_add_group_hom ψ]

src/analysis/analytic/composition.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ lemma comp_coeff_zero (q : formal_multilinear_series 𝕜 F G) (p : formal_multi
220220
begin
221221
let c : composition 0 := composition.ones 0,
222222
dsimp [formal_multilinear_series.comp],
223-
have : finset.singleton c = (finset.univ : finset (composition 0)),
223+
have : {c} = (finset.univ : finset (composition 0)),
224224
{ apply finset.eq_of_subset_of_card_le; simp [finset.card_univ, composition_card 0] },
225225
rw ← this,
226226
simp only [finset.sum_singleton, continuous_multilinear_map.sum_apply],

src/analysis/convex/basic.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ noncomputable def finset.center_mass (t : finset ι) (w : ι → ℝ) (z : ι
527527

528528
variables (i j : ι) (c : ℝ) (t : finset ι) (w : ι → ℝ) (z : ι → E)
529529

530-
open finset (hiding singleton)
530+
open finset
531531

532532
lemma finset.center_mass_empty : (∅ : finset ι).center_mass w z = 0 :=
533533
by simp only [center_mass, sum_empty, smul_zero]
@@ -548,7 +548,7 @@ begin
548548
{ rw [div_mul_eq_mul_div, mul_inv_cancel hw, one_div_eq_inv] }
549549
end
550550

551-
lemma finset.center_mass_singleton (hw : w i ≠ 0) : (finset.singleton i).center_mass w z = z i :=
551+
lemma finset.center_mass_singleton (hw : w i ≠ 0) : ({i} : finset ι).center_mass w z = z i :=
552552
by rw [center_mass, sum_singleton, sum_singleton, ← mul_smul, inv_mul_cancel hw, one_smul]
553553

554554
lemma finset.center_mass_eq_of_sum_1 (hw : t.sum w = 1) :
@@ -759,7 +759,7 @@ lemma convex_hull_eq (s : set E) :
759759
begin
760760
refine subset.antisymm (convex_hull_min _ _) _,
761761
{ intros x hx,
762-
use [punit, finset.singleton punit.star, λ _, 1, λ _, x, λ _ _, zero_le_one,
762+
use [punit, {punit.star}, λ _, 1, λ _, x, λ _ _, zero_le_one,
763763
finset.sum_singleton, λ _ _, hx],
764764
simp only [finset.center_mass, finset.sum_singleton, inv_one, one_smul] },
765765
{ rintros x y ⟨ι, sx, wx, zx, hwx₀, hwx₁, hzx, rfl⟩ ⟨ι', sy, wy, zy, hwy₀, hwy₁, hzy, rfl⟩

src/analysis/special_functions/trigonometric.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1160,7 +1160,7 @@ lt_of_le_of_ne (neg_pi_div_two_le_arcsin _)
11601160
(le_of_lt (div_sqrt_one_add_lt_one _)), ← arctan, ← h, sin_neg, sin_pi_div_two])
11611161

11621162
lemma tan_surjective : function.surjective tan :=
1163-
function.surjective_of_has_right_inverse ⟨_, tan_arctan
1163+
function.right_inverse.surjective tan_arctan
11641164

11651165
lemma arctan_tan {x : ℝ} (hx₁ : -(π / 2) < x) (hx₂ : x < π / 2) : arctan (tan x) = x :=
11661166
tan_inj_of_lt_of_lt_pi_div_two (neg_pi_div_two_lt_arctan _)

src/computability/reduce.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ theorem one_one_reducible_refl {α} [primcodable α] (p : α → Prop) :
7474
@[trans]
7575
theorem one_one_reducible.trans {α β γ} [primcodable α] [primcodable β] [primcodable γ]
7676
{p : α → Prop} {q : β → Prop} {r : γ → Prop} : p ≤₁ q → q ≤₁ r → p ≤₁ r
77-
| ⟨f, c₁, i₁, h₁⟩ ⟨g, c₂, i₂, h₂⟩ := ⟨g ∘ f, c₂.comp c₁, injective_comp i₂ i₁,
77+
| ⟨f, c₁, i₁, h₁⟩ ⟨g, c₂, i₂, h₂⟩ := ⟨g ∘ f, c₂.comp c₁, i₂.comp i₁,
7878
λ a, ⟨λ h, by rwa [←h₂, ←h₁], λ h, by rwa [h₁, h₂]⟩⟩
7979

8080
theorem one_one_reducible.to_many_one {α β} [primcodable α] [primcodable β]

src/computability/turing_machine.lean

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,16 +1079,15 @@ noncomputable def stmts₁ : stmt → finset stmt
10791079
| Q := {Q}
10801080

10811081
theorem stmts₁_self {q} : q ∈ stmts₁ q :=
1082-
by cases q; apply finset.mem_insert_self
1082+
by cases q; apply_rules [finset.mem_insert_self, finset.mem_singleton_self]
10831083

10841084
theorem stmts₁_trans {q₁ q₂} :
10851085
q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ :=
10861086
begin
10871087
intros h₁₂ q₀ h₀₁,
10881088
induction q₂ with _ q IH _ q IH _ q IH;
10891089
simp only [stmts₁] at h₁₂ ⊢;
1090-
simp only [finset.mem_insert, finset.mem_union,
1091-
finset.insert_empty_eq_singleton, finset.mem_singleton] at h₁₂,
1090+
simp only [finset.mem_insert, finset.mem_union, finset.mem_singleton] at h₁₂,
10921091
iterate 3 {
10931092
rcases h₁₂ with rfl | h₁₂,
10941093
{ unfold stmts₁ at h₀₁, exact h₀₁ },
@@ -1109,7 +1108,7 @@ theorem stmts₁_supports_stmt_mono {S q₁ q₂}
11091108
begin
11101109
induction q₂ with _ q IH _ q IH _ q IH;
11111110
simp only [stmts₁, supports_stmt, finset.mem_insert, finset.mem_union,
1112-
finset.insert_empty_eq_singleton, finset.mem_singleton] at h hs,
1111+
finset.mem_singleton] at h hs,
11131112
iterate 3 { rcases h with rfl | h; [exact hs, exact IH h hs] },
11141113
case TM1.stmt.branch : p q₁ q₂ IH₁ IH₂ {
11151114
rcases h with rfl | h | h, exacts [hs, IH₁ h hs.1, IH₂ h hs.2] },
@@ -1846,16 +1845,15 @@ noncomputable def stmts₁ : stmt → finset stmt
18461845
| Q@halt := {Q}
18471846

18481847
theorem stmts₁_self {q} : q ∈ stmts₁ q :=
1849-
by cases q; apply finset.mem_insert_self
1848+
by cases q; apply_rules [finset.mem_insert_self, finset.mem_singleton_self]
18501849

18511850
theorem stmts₁_trans {q₁ q₂} :
18521851
q₁ ∈ stmts₁ q₂ → stmts₁ q₁ ⊆ stmts₁ q₂ :=
18531852
begin
18541853
intros h₁₂ q₀ h₀₁,
18551854
induction q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH;
18561855
simp only [stmts₁] at h₁₂ ⊢;
1857-
simp only [finset.mem_insert, finset.insert_empty_eq_singleton,
1858-
finset.mem_singleton, finset.mem_union] at h₁₂,
1856+
simp only [finset.mem_insert, finset.mem_singleton, finset.mem_union] at h₁₂,
18591857
iterate 4 {
18601858
rcases h₁₂ with rfl | h₁₂,
18611859
{ unfold stmts₁ at h₀₁, exact h₀₁ },
@@ -1876,7 +1874,7 @@ theorem stmts₁_supports_stmt_mono {S q₁ q₂}
18761874
begin
18771875
induction q₂ with _ _ q IH _ _ q IH _ _ q IH _ q IH;
18781876
simp only [stmts₁, supports_stmt, finset.mem_insert, finset.mem_union,
1879-
finset.insert_empty_eq_singleton, finset.mem_singleton] at h hs,
1877+
finset.mem_singleton] at h hs,
18801878
iterate 4 { rcases h with rfl | h; [exact hs, exact IH h hs] },
18811879
case TM2.stmt.branch : f q₁ q₂ IH₁ IH₂ {
18821880
rcases h with rfl | h | h, exacts [hs, IH₁ h hs.1, IH₂ h hs.2] },
@@ -2200,14 +2198,14 @@ begin
22002198
list.length_reverse, list.length_append, list.length_map] } },
22012199
{ split_ifs; rw [function.update_noteq h', ← proj_map_nth, hL],
22022200
rw function.update_noteq h' } },
2203-
case TM2to1.st_act.peek : b f {
2201+
case TM2to1.st_act.peek : f {
22042202
rw function.update_eq_self,
22052203
use [L, hL], rw [tape.move_left_right], congr,
22062204
cases e : S k, {refl},
22072205
rw [list.length_cons, nat.iterate_succ', tape.move_right_left, tape.move_right_n_head,
22082206
tape.mk'_nth_nat, add_bottom_nth_snd, stk_nth_val _ (hL k), e,
22092207
list.reverse_cons, ← list.length_reverse, list.nth_concat_length], refl },
2210-
case TM2to1.st_act.pop : b f {
2208+
case TM2to1.st_act.pop : f {
22112209
cases e : S k,
22122210
{ simp only [tape.mk'_head, list_blank.head_cons, tape.move_left_mk',
22132211
list.length, tape.write_mk', list.head', nat.iterate_zero, list.tail_nil],
@@ -2385,24 +2383,22 @@ theorem tr_supports {S} (ss : TM2.supports M S) :
23852383
{ -- stack op
23862384
rw TM2to1.supports_run at ss',
23872385
simp only [TM2to1.tr_stmts₁_run, finset.mem_union,
2388-
finset.insert_empty_eq_singleton,
23892386
finset.mem_insert, finset.mem_singleton] at sub,
2390-
have hgo := sub _ (or.inl $ or.inr rfl),
2391-
have hret := sub _ (or.inl $ or.inl rfl),
2387+
have hgo := sub _ (or.inl $ or.inl rfl),
2388+
have hret := sub _ (or.inl $ or.inr rfl),
23922389
cases IH ss' (λ x hx, sub x $ or.inr hx) with IH₁ IH₂,
23932390
refine ⟨by simp only [tr_normal_run, TM1.supports_stmt]; intros; exact hgo, λ l h, _⟩,
23942391
rw [tr_stmts₁_run] at h,
23952392
simp only [TM2to1.tr_stmts₁_run, finset.mem_union,
2396-
finset.insert_empty_eq_singleton,
23972393
finset.mem_insert, finset.mem_singleton] at h,
23982394
rcases h with ⟨rfl | rfl⟩ | h,
2399-
{ unfold TM1.supports_stmt TM2to1.tr,
2400-
exact ⟨IH₁, λ _ _, hret⟩ },
24012395
{ unfold TM1.supports_stmt TM2to1.tr,
24022396
rcases s with _|_|_,
24032397
{ exact ⟨λ _ _, hret, λ _ _, hgo⟩ },
24042398
{ exact ⟨λ _ _, hret, λ _ _, hgo⟩ },
24052399
{ exact ⟨⟨λ _ _, hret, λ _ _, hret⟩, λ _ _, hgo⟩ } },
2400+
{ unfold TM1.supports_stmt TM2to1.tr,
2401+
exact ⟨IH₁, λ _ _, hret⟩ },
24062402
{ exact IH₂ _ h } },
24072403
{ -- load
24082404
unfold TM2to1.tr_stmts₁ at ss' sub ⊢,

0 commit comments

Comments
 (0)