Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ lemma redex_subst_cong (s s' : Term Var) (x y : Var) (step : s ⭢βᶠ s') :
redex_subst_cong_lc _ _ _ _ step (.fvar y)

/-- An β-reduction step does not introduce new free variables. -/
lemma step_not_fv (step : M ⭢βᶠ N) (hw : w ∉ M.fv) : w ∉ N.fv := by
lemma step_not_fv (step : M ⭢βᶠ N) : N.fv ⊆ M.fv := by
induction step with
| base h => cases h with | beta => grind [open_preserve_not_fvar]
| abs =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@ lemma stronglyCommute_eta_beta : StronglyCommute (@FullEta Var) FullBeta := by
cases h_eta with | eta =>
have ⟨w, _⟩ := fresh_exists <| free_union [fv] Var
have st_beta_w : app y₁ (fvar w) ⭢βᶠ N ^ fvar w := by grind [st_body_beta w]
rcases invert_step_app_fvar st_beta_w with ⟨u', _, st_u⟩ | ⟨u1, _, _⟩
rcases invert_step_app_fvar st_beta_w with ⟨u', h, st_u⟩ | ⟨u1, _, _⟩
· use u'
grind [open_eq_app ?_ (step_not_fv st_u ?_)]
apply open_eq_app at h <;> grind [FullBeta.step_not_fv st_u]
· use abs u1
grind [open_injective w N u1]
case abs S ys st_body_eta =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ lemma invert_step_app_fvar (step : (app M (fvar x)) ⭢ηᶠ N) :
variable [HasFresh Var] [DecidableEq Var]

/-- An η-reduction step does not introduce new free variables. -/
lemma step_not_fv (step : M ⭢ηᶠ M') (hw : w ∉ M.fv) : w ∉ M'.fv := by
lemma step_not_fv (step : M ⭢ηᶠ M') : M.fv = M'.fv := by
induction step with
| base => grind
| abs =>
Expand Down
Loading