From 3b229d2a600bc177923cf2b2520cadf535f7ce1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Mon, 1 Jun 2026 16:43:54 +0000 Subject: [PATCH 01/12] add named representation update from https://github.com/leanprover/cslib/pull/458 --- Cslib.lean | 1 + .../LambdaCalculus/Named/Untyped/Basic.lean | 147 ++-- .../Named/Untyped/Properties.lean | 658 ++++++++++++++++++ 3 files changed, 728 insertions(+), 78 deletions(-) create mode 100644 Cslib/Languages/LambdaCalculus/Named/Untyped/Properties.lean diff --git a/Cslib.lean b/Cslib.lean index 3e5977af2..ddaa6bb22 100644 --- a/Cslib.lean +++ b/Cslib.lean @@ -113,6 +113,7 @@ public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.MultiSubst public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.Properties public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.StrongNorm public import Cslib.Languages.LambdaCalculus.Named.Untyped.Basic +public import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties public import Cslib.Logics.HML.Basic public import Cslib.Logics.HML.LogicalEquivalence public import Cslib.Logics.LinearLogic.CLL.Basic diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/Basic.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/Basic.lean index c6adcca35..f0ed25982 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/Basic.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/Basic.lean @@ -1,7 +1,7 @@ /- Copyright (c) 2025 Fabrizio Montesi. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. -Authors: Fabrizio Montesi +Authors: Fabrizio Montesi, Haoxuan Yin -/ module @@ -10,25 +10,27 @@ public import Cslib.Foundations.Data.HasFresh public import Cslib.Foundations.Syntax.HasAlphaEquiv public import Cslib.Foundations.Syntax.HasSubstitution -@[expose] public section - /-! # λ-calculus -The untyped λ-calculus. +The untyped λ-calculus, with a named representation of variables. ## References * [H. Barendregt, *Introduction to Lambda Calculus*][Barendregt1984] +* Definition of α-equivalence [M. Gabbay and A. Pitts, *A New Approach to Abstract Syntax with +Variable Binding*][Gabbay2002] -/ +@[expose] public section + namespace Cslib universe u -variable {Var : Type u} +variable {Var : Type u} [DecidableEq Var] [HasFresh Var] -namespace LambdaCalculus.Named +namespace LambdaCalculus.Named.Untyped /-- Syntax of terms. -/ inductive Term (Var : Type u) : Type u where @@ -37,52 +39,71 @@ inductive Term (Var : Type u) : Type u where | app (m n : Term Var) deriving DecidableEq +namespace Term + /-- Free variables. -/ -def Term.fv [DecidableEq Var] : Term Var → Finset Var +def fv : Term Var → Finset Var | var x => {x} - | abs x m => m.fv.erase x + | abs x m => m.fv \ {x} | app m n => m.fv ∪ n.fv /-- Bound variables. -/ -def Term.bv [DecidableEq Var] : Term Var → Finset Var +def bv : Term Var → Finset Var | var _ => ∅ - | abs x m => m.bv ∪ {x} -- Could also be `insert x m.bv` + | abs x m => m.bv ∪ {x} | app m n => m.bv ∪ n.bv /-- Variable names (free and bound) in a term. -/ -def Term.vars [DecidableEq Var] (m : Term Var) : Finset Var := - m.fv ∪ m.bv +def vars : Term Var → Finset Var + | var x => {x} + | abs x m => m.vars ∪ {x} + | app m n => m.vars ∪ n.vars -/-- Capture-avoiding substitution, as an inference system. -/ -inductive Term.Subst [DecidableEq Var] : Term Var → Var → Term Var → Term Var → Prop where - | varHit : (var x).Subst x r r - | varMiss : x ≠ y → (var y).Subst x r (var y) - | absShadow : (abs x m).Subst x r (abs x m) - | absIn : x ≠ y → y ∉ r.fv → m.Subst x r m' → (abs y m).Subst x r (abs y m') - | app : m.Subst x r m' → n.Subst x r n' → (app m n).Subst x r (app m' n') - -/-- Renaming, or variable substitution. `m.rename x y` renames `x` into `y` in `m`. -/ -def Term.rename [DecidableEq Var] (m : Term Var) (x y : Var) : Term Var := +/-- Variable renaming, applying to both free and bound variables. + `m.rename x y` changes all occurrences of `x` into `y` in `m`. -/ +def rename (m : Term Var) (x y : Var) : Term Var := match m with - | var z => if z = x then (var y) else (var z) - | abs z m' => - if z = x then - -- Shadowing - abs z m' - else - abs z (m'.rename x y) + | var z => var (if z = x then y else z) + | abs z m' => abs (if z = x then y else z) (m'.rename x y) | app n1 n2 => app (n1.rename x y) (n2.rename x y) +omit [HasFresh Var] in /-- Renaming preserves size. -/ @[simp] -theorem Term.rename.eq_sizeOf {m : Term Var} {x y : Var} [DecidableEq Var] : - sizeOf (m.rename x y) = sizeOf m := by +theorem rename_eq_sizeOf {m : Term Var} {x y : Var} : sizeOf (m.rename x y) = sizeOf m := by induction m <;> aesop (add simp [Term.rename]) +/-- α-equivalence. -/ +inductive AlphaEquiv : Term Var → Term Var → Prop where + | var {x} : AlphaEquiv (var x) (var x) + | abs {y x1 x2 m1 m2} : y ∉ m1.vars ∪ m2.vars ∪ {x1, x2} → + AlphaEquiv (m1.rename x1 y) (m2.rename x2 y) → AlphaEquiv (abs x1 m1) (abs x2 m2) + | app {m1 n1 m2 n2} : AlphaEquiv m1 n1 → AlphaEquiv m2 n2 → AlphaEquiv (app m1 m2) (app n1 n2) + +/-- Instance for the notation `m =α n`. -/ +instance instHasAlphaEquivTerm : HasAlphaEquiv (Term Var) where + AlphaEquiv := AlphaEquiv + +omit [HasFresh Var] in +/-- Allow grind to recognise the notation of α-equivalence. -/ +@[grind ←] +theorem AlphaEquiv_def (m n : Term Var) : AlphaEquiv m n ↔ m =α n := by + rfl + +/-- Capture-avoiding substitution, as an inference system. -/ +inductive Subst : Term Var → Var → Term Var → Term Var → Prop where + | varHit {x r} : (var x).Subst x r r + | varMiss {x y r} : y ≠ x → (var y).Subst x r (var y) + | absShadow {x m r} : (abs x m).Subst x r (abs x m) + | absIn {x y m r m'} : y ∉ r.fv ∪ {x} → m.Subst x r m' → (abs y m).Subst x r (abs y m') + | app {m n x r m' n'} : m.Subst x r m' → n.Subst x r n' → (app m n).Subst x r (app m' n') + | alpha {m m' r r' n n' x} : m =α m' → r =α r' → n =α n' → Subst m x r n → m'.Subst x r' n' + /-- Capture-avoiding substitution. `m.subst x r` replaces the free occurrences of variable `x` in `m` with `r`. -/ -def Term.subst [DecidableEq Var] [HasFresh Var] (m : Term Var) (x : Var) (r : Term Var) : - Term Var := +@[grind, simp] +def subst (m : Term Var) (x : Var) (r : Term Var) : + Term Var := match m with | var y => if y = x then r else var y | abs y m' => @@ -91,25 +112,21 @@ def Term.subst [DecidableEq Var] [HasFresh Var] (m : Term Var) (x : Var) (r : Te else if y ∉ r.fv then abs y (m'.subst x r) else - let z := HasFresh.fresh (m'.vars ∪ r.vars ∪ {x}) + let z := HasFresh.fresh (m'.vars ∪ r.vars ∪ {x, y}) abs z ((m'.rename y z).subst x r) | app m1 m2 => app (m1.subst x r) (m2.subst x r) termination_by m -decreasing_by all_goals grind [rename.eq_sizeOf, abs.sizeOf_spec, app.sizeOf_spec] +decreasing_by all_goals grind [rename_eq_sizeOf, abs.sizeOf_spec, app.sizeOf_spec] /-- `Term.subst` is a substitution for λ-terms. Gives access to the notation `m[x := n]`. -/ -instance instHasSubstitutionTerm [DecidableEq Var] [HasFresh Var] : +instance instHasSubstitutionTerm : HasSubstitution (Term Var) Var (Term Var) where - subst := Term.subst + subst := subst --- TODO --- theorem Term.subst_comm --- [DecidableEq Var] [HasFresh Var] --- {m : Term Var} {x : Var} {n1 : Term Var} {y : Var} {n2 : Term Var} : --- (m[x := n1])[y := n2] = (m[y := n2])[x := n1] := by --- induction m --- -- case var z => --- sorry +/-- Allow grind to recognise the notation of substitution. -/ +@[grind ←] +theorem subst_def (m r : Term Var) (x : Var) : m.subst x r = m[x := r] := by + rfl /-- Contexts. -/ inductive Context (Var : Type u) : Type u where @@ -127,39 +144,13 @@ def Context.fill (c : Context Var) (m : Term Var) : Term Var := | appL c n => Term.app (c.fill m) n | appR n c => Term.app n (c.fill m) -/-- Any `Term` can be obtained by filling a `Context` with a variable. This proves that `Context` -completely captures the syntax of terms. -/ -theorem Context.complete (m : Term Var) : - ∃ (c : Context Var) (x : Var), m = (c.fill (Term.var x)) := by - induction m with - | var x => exists hole, x - | abs x n ih => - obtain ⟨c', y, ih⟩ := ih - exists Context.abs x c', y - rw [ih, fill] - | app n₁ n₂ ih₁ ih₂ => - obtain ⟨c₁, x₁, ih₁⟩ := ih₁ - exists Context.appL c₁ n₂, x₁ - rw [ih₁, fill] - -open Term - -/-- α-equivalence. -/ -inductive Term.AlphaEquiv [DecidableEq Var] : Term Var → Term Var → Prop where --- The α-axiom -| ax {m : Term Var} {x y : Var} : - y ∉ m.fv → AlphaEquiv (abs x m) (abs y (m.rename x y)) --- Equivalence relation rules -| refl : AlphaEquiv m m -| symm : AlphaEquiv m n → AlphaEquiv n m -| trans : AlphaEquiv m1 m2 → AlphaEquiv m2 m3 → AlphaEquiv m1 m3 --- Context closure -| ctx {c : Context Var} {m n : Term Var} : AlphaEquiv m n → AlphaEquiv (c.fill m) (c.fill n) - -/-- Instance for the notation `m =α n`. -/ -instance instHasAlphaEquivTerm [DecidableEq Var] : HasAlphaEquiv (Term Var) where - AlphaEquiv := Term.AlphaEquiv +/-- Variables (both free and bound) in a context. -/ +def Context.vars : Context Var → Finset Var + | hole => ∅ + | abs x c => c.vars ∪ {x} + | appL c m => c.vars ∪ m.vars + | appR m c => m.vars ∪ c.vars -end LambdaCalculus.Named +end LambdaCalculus.Named.Untyped.Term end Cslib diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/Properties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/Properties.lean new file mode 100644 index 000000000..4ad99a267 --- /dev/null +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/Properties.lean @@ -0,0 +1,658 @@ +/- +Copyright (c) 2026 Haoxuan Yin. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Haoxuan Yin, Fabrizio Montesi +-/ + +module + +public import Cslib.Languages.LambdaCalculus.Named.Untyped.Basic + +public section + +namespace Cslib + +universe u + +variable {Var : Type u} [DecidableEq Var] + +namespace LambdaCalculus.Named.Untyped.Term + +/-- A variable in a term is either free or bound. -/ +theorem vars_either_fv_or_bv {m : Term Var} : + m.vars = m.fv ∪ m.bv := by + induction m <;> grind [fv, bv, vars] + +/-- Renaming an unused variable has no effect. -/ +@[simp] +theorem rename_unused {m : Term Var} {x y : Var} : + x ∉ m.vars → m.rename x y = m := by + induction m <;> grind [vars, rename] + +/-- Renaming a variable to itself has no effect. -/ +@[simp] +theorem rename_same {m : Term Var} {x : Var} : + m.rename x x = m := by + induction m <;> grind [vars, rename] + +/-- Renaming a used variable changes the set of variables. -/ +@[simp] +theorem rename_vars_used {m : Term Var} {x y : Var} : + x ∈ m.vars → (m.rename x y).vars = m.vars.erase x ∪ {y} := by + induction m with + | var z => grind [vars, rename] + | abs z m ih => + intro hx + by_cases hxm : x ∈ m.vars <;> grind [vars, rename, rename_unused] + | app m n ihm ihn => + intro hx + by_cases hxm : x ∈ m.vars + · by_cases hxn : x ∈ n.vars <;> grind [vars, rename, rename_unused] + · have hxn : x ∈ n.vars := by grind [vars] + grind [vars, rename, rename_unused] + +/-- Renaming removes the variable. -/ +theorem rename_remove {m : Term Var} {x y : Var} : + x ≠ y → x ∉ (m.rename x y).vars := by + intro hxy + by_cases hx : x ∈ m.vars <;> grind [rename_vars_used, rename_unused] + +/-- The set of variables after renaming. -/ +theorem rename_vars {m : Term Var} {x y : Var} : + (m.rename x y).vars = m.vars \ {x} ∪ (if x ∈ m.vars then {y} else ∅) := by + by_cases x ∈ m.vars <;> grind [vars, rename, rename_unused, rename_vars_used] + +/-- The set of free variables after renaming. -/ +theorem rename_fv {m : Term Var} {x y : Var} : + y ∉ m.vars → (m.rename x y).fv = m.fv \ {x} ∪ (if x ∈ m.fv then {y} else ∅) := by + induction m <;> grind [fv, vars, rename, vars_either_fv_or_bv] + +/-- Concatenation of renaming. -/ +@[simp] +theorem rename_concat {m : Term Var} {x y z : Var} : + y ∉ m.vars → (m.rename x y).rename y z = m.rename x z := by + induction m <;> grind [vars, rename] + +/-- Commutativity of renaming, simpler version. -/ +theorem rename_comm {m : Term Var} {x y z w : Var} : + x ≠ z → y ∉ m.vars ∪ {x, z} → w ∉ m.vars ∪ {x, z} → + (m.rename x y).rename z w = (m.rename z w).rename x y := by + induction m <;> grind [vars, rename] + +/-- Commutativity of renaming, more general version. -/ +theorem rename_comm2 {m : Term Var} {x y z w : Var} : + y ∉ m.vars ∪ {x, z} → w ∉ m.vars ∪ {x, y, z} → + (m.rename x y).rename (if z = x then y else z) w = (m.rename z w).rename x y := by + intro hy hw + by_cases hzx : z = x + · grind [rename_same, rename_unused, rename_concat, rename_vars] + · grind [rename_comm] + +omit [DecidableEq Var] in +@[grind norm↓← ] +lemma induction_by_sizeOf {m n : Term Var} : sizeOf m < sizeOf n ↔ WellFoundedRelation.rel m n := by + rfl + +/-- α-equivalent terms have the same size. -/ +theorem AlphaEquiv.eq_sizeOf {m n : Term Var} : m =α n → sizeOf m = sizeOf n := by + intro h + induction h with + | @var x => rfl + | @abs y x1 x2 m1 m2 hy h ih => + simpa using ih + | @app m1 n1 m2 n2 _ hm hn => + grind + +/-- α-equivalent terms have the same free variables. -/ +theorem AlphaEquiv.same_fv {m n : Term Var} : m =α n → m.fv = n.fv := by + intro h + induction h with + | @var x => rfl + | @abs y x1 x2 m1 m2 hy h ih => + rw [Term.fv, Term.fv] + have h1 : m1.fv \ {x1} = (m1.rename x1 y).fv \ {y} := by + grind [rename_fv, vars_either_fv_or_bv] + have h2 : (m2.rename x2 y).fv \ {y} = m2.fv \ {x2} := by + grind [rename_fv, vars_either_fv_or_bv] + grind + | @app m1 n1 m2 n2 h1 h2 ih1 ih2 => grind [Term.fv] + +variable [HasFresh Var] + +/-- Reflexivity of α-equivalence. -/ +theorem AlphaEquiv.refl (m : Term Var) : m =α m := by + refine WellFounded.induction (C := fun m => m =α m) sizeOfWFRel.wf m ?_ + simp only; intro m ih + cases m with + | var x => apply AlphaEquiv.var + | abs x m => + obtain ⟨z, hz⟩ := HasFresh.fresh_exists (m.vars ∪ {x}) + apply AlphaEquiv.abs (y := z) + · grind [rename_vars] + apply ih + grind [rename_eq_sizeOf] + | app m n => + apply AlphaEquiv.app <;> apply ih <;> grind + +omit [HasFresh Var] in +/-- Symmetry of α-equivalence. -/ +theorem AlphaEquiv.symm {m n : Term Var} : m =α n → n =α m := by + intro h + induction h with + | @var x => apply AlphaEquiv.var + | @abs y x1 x2 m1 m2 hy h ih => + apply AlphaEquiv.abs (y := y) <;> grind [rename_unused, rename_vars, rename_concat] + | @app m1 n1 m2 n2 hwm1 hwn1 hwm2 hwn2 => + apply AlphaEquiv.app <;> assumption + +/-- Renaming α-equivalent terms produces α-equivalent terms. -/ +theorem AlphaEquiv.rename_preserve (m n : Term Var) (x y : Var) : + y ∉ m.vars ∪ n.vars → m =α n → (m.rename x y) =α (n.rename x y) := by + refine (WellFounded.induction sizeOfWFRel.wf m + (C := fun m => ∀ (n : Term Var) (x y : Var), y ∉ m.vars ∪ n.vars → + m =α n → (m.rename x y) =α (n.rename x y)) ?_) n x y + intro m ih n x y hy h + by_cases hyx : y = x + · grind [rename_same] + cases h with + | @var z => apply AlphaEquiv.refl + | @abs z x1 x2 m1 m2 hz hbody => + obtain ⟨w, hw⟩ := HasFresh.fresh_exists (m1.vars ∪ m2.vars ∪ {x1, x2, x, y, z}) + apply AlphaEquiv.abs (y := w) + · grind [rename_vars] + rw [rename_comm2, rename_comm2] + case neg.abs.a => + apply ih + · grind [rename_eq_sizeOf] + · grind [vars, rename_vars] + · have hxzw : ((m1.rename x1 z).rename z w) =α ((m2.rename x2 z).rename z w) := by + apply ih <;> grind [vars, rename_vars, rename_eq_sizeOf] + grind [rename_concat] + all_goals grind [vars] + | @app m1 n1 m2 n2 hm hn => + apply AlphaEquiv.app <;> apply ih <;> grind [vars] + +/-- Elimination rule for α-equivalence of abstractions. + It states that if two abstractions are α-equivalent, + then their bodies can be renamed to ``any'' fresh variable y and remain α-equivalent. + This is sometimes easier to use than using by_cases on the equivalence, + which can only produce the claim for ``some'' fresh y. -/ +theorem AlphaEquiv.abs_elim {m1 m2 : Term Var} {x1 x2 y : Var} : + y ∉ m1.vars ∪ m2.vars ∪ {x1, x2} → (Term.abs x1 m1) =α (Term.abs x2 m2) → + (m1.rename x1 y) =α (m2.rename x2 y) := by + intro hy h + cases h with + | @abs z _ _ _ _ hz h1 => + by_cases hzy : z = y + · grind + · have hxzy : ((m1.rename x1 z).rename z y) =α ((m2.rename x2 z).rename z y) := by + apply AlphaEquiv.rename_preserve <;> grind [AlphaEquiv.rename_preserve, rename_vars] + grind [rename_concat, rename_vars] + +/-- Transitivity of α-equivalence. -/ +theorem AlphaEquiv.trans {m n p : Term Var} : + m =α n → n =α p → m =α p := by + refine (WellFounded.induction sizeOfWFRel.wf m + (C := fun m => ∀ (n p : Term Var), + m =α n → n =α p → m =α p) ?_) n p + intro m ih n p hmn hnp + cases m with + | var x => + cases hmn with + | @var x => assumption + | abs x1 m1 => + obtain ⟨w, hw⟩ := HasFresh.fresh_exists (m1.vars ∪ {x1} ∪ n.vars ∪ p.vars) + have hmn' := hmn + cases hmn' with + | @abs y x1 x2 m1 m2 hy h1 => + have hnp' := hnp + cases hnp' with + | @abs z x2 x3 m2 m3 hz h2 => + apply AlphaEquiv.abs (y := w) + · grind [vars, rename_unused, rename_vars, rename_concat] + apply ih _ ?_ (m2.rename x2 w) <;> + grind [AlphaEquiv.abs_elim, vars, rename_vars, rename_eq_sizeOf] + | app m1 m2 => + cases hmn with + | @app m1 n1 m2 n2 hmn1 hmn2 => + cases hnp with + | @app n1 p1 n2 p2 hnp1 hnp2 => + apply AlphaEquiv.app + · apply ih _ ?_ n1 <;> grind [vars, rename_vars] + · apply ih _ ?_ n2 <;> grind [vars, rename_vars] + +/-- Renaming a non-free variable results in an α-equivalent term -/ +theorem AlphaEquiv.rename_non_fv {m : Term Var} {x y : Var} : + x ∉ m.fv → y ∉ m.vars → m =α (m.rename x y) := by + intro hx hy + induction m with + | var z => + have hzx : z ≠ x := by + grind [fv] + simpa [rename, hzx] using AlphaEquiv.var + | abs z m ih => + by_cases hzx : z = x + · subst z + simp only [rename, ↓reduceIte] + obtain ⟨w, hw⟩ := HasFresh.fresh_exists (m.vars ∪ {x, y}) + apply AlphaEquiv.abs (y := w) + · grind [rename_unused, rename_vars] + rw [rename_concat] <;> grind [vars, AlphaEquiv.refl] + · simp only [rename, hzx, ↓reduceIte] + obtain ⟨w, hw⟩ := HasFresh.fresh_exists (m.vars ∪ {x, y, z}) + apply AlphaEquiv.abs (y := w) + · grind [rename_unused, rename_vars] + apply AlphaEquiv.rename_preserve <;> grind [vars, rename_vars, fv] + | app m1 m2 ih1 ih2 => + apply AlphaEquiv.app + · apply ih1 <;> grind [vars, fv] + · apply ih2 <;> grind [vars, fv] + +/-- Abstracting over an arbitrary non-free variable results in the same term, + modulo α-equivalence. -/ +theorem AlphaEquiv.abs_non_fv {m1 m2 : Term Var} {x1 x2 : Var} : + m1 =α m2 → x1 ∉ m1.fv → x2 ∉ m2.fv → (Term.abs x1 m1) =α (Term.abs x2 m2) := by + intro hm hx1 hx2 + obtain ⟨y, hy⟩ := HasFresh.fresh_exists (m1.vars ∪ m2.vars ∪ {x1, x2}) + apply AlphaEquiv.abs (y := y) + · grind + apply AlphaEquiv.trans (n := m1) + · grind [rename_non_fv, AlphaEquiv.symm] + apply AlphaEquiv.trans (n := m2) <;> grind [rename_non_fv] + +/-- Renaming an abstraction leads to an α-equivalent term. -/ +theorem AlphaEquiv.abs_rename {m : Term Var} {x y : Var} : + y ∉ m.vars ∪ {x} → (Term.abs x m) =α (Term.abs y (m.rename x y)) := by + intro hy + obtain ⟨z, hz⟩ := HasFresh.fresh_exists (m.vars ∪ {x, y}) + apply AlphaEquiv.abs (y := z) <;> grind [vars, rename_vars, rename_concat, AlphaEquiv.refl] + +omit [DecidableEq Var] [HasFresh Var] in +/-- Any `Term` can be obtained by filling a `Context` with a variable. This proves that `Context` +completely captures the syntax of terms. -/ +theorem Context.complete (m : Term Var) : + ∃ (c : Context Var) (x : Var), m = (c.fill (var x)) := by + induction m with + | var x => exists hole, x + | abs x n ih => + obtain ⟨c', y, ih⟩ := ih + exists Context.abs x c', y + rw [ih, fill] + | app n₁ n₂ ih₁ ih₂ => + obtain ⟨c₁, x₁, ih₁⟩ := ih₁ + exists Context.appL c₁ n₂, x₁ + rw [ih₁, fill] + +omit [HasFresh Var] in +/-- The set of variables after filling a context. -/ +theorem Context.fill_vars {c : Context Var} {m : Term Var} : + (c.fill m).vars = c.vars ∪ m.vars := by + induction c <;> grind [Context.fill, Context.vars, Term.vars] + +/-- α-equivalence is preserved under context filling. -/ +theorem AlphaEquiv.context {m n : Term Var} {c : Context Var} : + m =α n → (c.fill m) =α (c.fill n) := by + intro h + induction c with + | hole => assumption + | abs x c ih => + simp only [Context.fill] + obtain ⟨y, hy⟩ := HasFresh.fresh_exists (m.vars ∪ n.vars ∪ c.vars ∪ {x}) + apply AlphaEquiv.abs (y := y) <;> grind [Context.fill_vars, rename_preserve] + | appL c m ih => + apply AlphaEquiv.app <;> grind [AlphaEquiv.app, AlphaEquiv.refl, vars] + | appR m c ih => + apply AlphaEquiv.app <;> grind [AlphaEquiv.app, AlphaEquiv.refl, vars] + +/-- The functional definition of substitution satisfies the relational definition of substitution. +-/ +theorem Subst.function_to_relation {m r : Term Var} {x : Var} : + m.Subst x r (m[x := r]) := by + refine WellFounded.induction (C := fun m => m.Subst x r (m[x := r])) sizeOfWFRel.wf m ?_ + simp only; intro m ih + cases m with + | var y => + by_cases hyx : y = x + · subst y + simp only [← subst_def, subst.eq_1, ↓reduceIte] + apply Subst.varHit + · simp [hyx, ← subst_def] + grind [Subst.varMiss] + | abs y m => + by_cases hyx : y = x + · subst y + simp only [← subst_def, subst.eq_2, ↓reduceIte] + apply Subst.absShadow + · simp only [← subst_def, subst.eq_2, hyx, ↓reduceIte, Finset.union_insert] + by_cases hyr : y ∈ r.fv + · simp only [hyr] + have hz := fresh_notMem (insert x (insert y (m.vars ∪ r.vars))) + set z := fresh (insert x (insert y (m.vars ∪ r.vars))) + apply Subst.alpha (m := abs z (m.rename y z)) (r := r) (n := abs z ((m.rename y z)[x := r])) + · have h1 : abs z (m.rename y z) = (abs y m).rename y z := by + simp [rename] + grind [AlphaEquiv.symm, AlphaEquiv.rename_non_fv, vars, fv] + · grind [AlphaEquiv.refl] + · grind [AlphaEquiv.refl] + · apply Subst.absIn + · grind [vars, fv, vars_either_fv_or_bv] + apply ih + grind [rename_eq_sizeOf] + · simp only [hyr] + apply Subst.absIn + · grind [vars, fv, vars_either_fv_or_bv] + apply ih + grind + | app m1 m2 => + simp only [← subst_def, subst.eq_3] + apply Subst.app <;> apply ih <;> grind + +/-- Substituting a non-free variable has no effect. -/ +theorem subst.non_free {m r : Term Var} {x : Var} : + x ∉ m.fv → (m[x := r]) =α m := by + refine WellFounded.induction (C := fun m => x ∉ m.fv → (m[x := r]) =α m) sizeOfWFRel.wf m ?_ + simp only; intro m ih hx + cases m with + | var y => + have hyx : y ≠ x := by + grind [fv] + simp only [← subst_def, subst.eq_1, hyx, ↓reduceIte] + apply AlphaEquiv.var + | abs y m => + by_cases hyx : y = x + · subst y + simp only [← subst_def, subst.eq_2, ↓reduceIte] + apply AlphaEquiv.refl + · by_cases hyr : y ∈ r.fv + · simp only [← subst_def, subst.eq_2, hyx, ↓reduceIte, hyr, not_true_eq_false, + Finset.union_insert, Finset.union_singleton] + have hz := fresh_notMem (insert x (insert y (m.vars ∪ r.vars))) + set z := fresh (insert x (insert y (m.vars ∪ r.vars))) + obtain ⟨w, hw⟩ := HasFresh.fresh_exists (m.vars ∪ r.vars ∪ ((m.rename y z).subst x r).vars + ∪ {x, y, z}) + apply AlphaEquiv.abs (y := w) + · grind [vars, rename_unused, rename_vars] + apply AlphaEquiv.trans (n := ((m.rename y z).rename z w)) + · apply AlphaEquiv.rename_preserve + · grind [vars, rename_vars, fv] + apply ih <;> grind [fv, rename_fv, rename_eq_sizeOf] + · grind [rename_concat, AlphaEquiv.refl] + · simp only [← subst_def, subst.eq_2, hyx, ↓reduceIte, hyr, not_false_eq_true] + apply AlphaEquiv.context (c := Context.abs y Context.hole) + apply ih <;> grind [fv] + | app m1 m2 => + simp only [← subst_def, subst.eq_3] + apply AlphaEquiv.app <;> apply ih <;> grind [fv] + +lemma subst.abs_fresh_helper {m r : Term Var} {x y z : Var} : + z ∉ m.vars ∪ r.vars ∪ {x, y} → + ((Term.abs y m)[x := r]) =α (Term.abs z ((m.rename y z)[x := r])) + ∧ (y ∉ r.fv ∪ {x} → (Term.abs y (m[x := r])) =α (Term.abs z ((m.rename y z)[x := r]))) := by + refine (WellFounded.induction sizeOfWFRel.wf m + (C := fun m => ∀ (r : Term Var) (x y z : Var), + z ∉ m.vars ∪ r.vars ∪ {x, y} → + ((Term.abs y m)[x := r]) =α (Term.abs z ((m.rename y z)[x := r])) + ∧ (y ∉ r.fv ∪ {x} → (Term.abs y (m[x := r])) =α (Term.abs z ((m.rename y z)[x := r])))) ?_) + r x y z + intro m ih r x y z hz + have hright : ∀ (m' : Term Var) (y' : Var), sizeOf m' = sizeOf m → z ∉ m'.vars ∪ r.vars ∪ {x, y'} + → y' ∉ r.fv ∪ {x} → (Term.abs y' (m'[x:=r])) =α (Term.abs z ((m'.rename y' z)[x:=r])) := by + intro m' y' hm' hz hy' + cases m' with + | var w => + by_cases hwx : w = x + · subst w + have hxy' : x ≠ y' := by grind + rw [rename] + simp only [← subst_def, subst.eq_1, ↓reduceIte, hxy'] + apply AlphaEquiv.abs_non_fv <;> grind [vars_either_fv_or_bv, AlphaEquiv.refl] + · simp only [← subst_def, subst.eq_1, hwx, ↓reduceIte] + rw [rename] + by_cases hwy' : w = y' + · subst w + have hzx : z ≠ x := by grind + simp only [↓reduceIte, subst.eq_1, hzx] + obtain ⟨v, hv⟩ := HasFresh.fresh_exists ({y', z}) + apply AlphaEquiv.abs (y := v) <;> grind [vars, rename, AlphaEquiv.var] + · simp only [hwy', ↓reduceIte, subst.eq_1, hwx] + apply AlphaEquiv.abs_non_fv <;> grind [vars_either_fv_or_bv, AlphaEquiv.refl, Term.fv] + | app m1 m2 => + obtain ⟨w, hw⟩ := HasFresh.fresh_exists + ((m1.app m2)[x := r].vars ∪ (((m1.app m2).rename y' z)[x := r]).vars + ∪ m1[x := r].vars ∪ m2[x := r].vars ∪ (m1.rename y' z)[x := r].vars + ∪ (m2.rename y' z)[x := r].vars ∪ {y', z}) + apply AlphaEquiv.abs (y := w) + · grind + simp only [← subst_def, subst.eq_3, rename] + apply AlphaEquiv.app <;> apply AlphaEquiv.abs_elim <;> grind [vars, rename_vars] + | abs w m1 => + by_cases hwy' : w = y' + · subst w + rw [rename] + have hy'x : y' ≠ x := by grind + have hy'r : y' ∉ r.fv := by grind + have hzx : z ≠ x := by grind + have hzr : z ∉ r.fv := by grind [vars_either_fv_or_bv] + simp only [← subst_def, subst.eq_2, hy'x, ↓reduceIte, hy'r, not_false_eq_true, hzx, hzr] + apply AlphaEquiv.abs_non_fv + · apply (ih _ _ _ _ _ _ _).right <;> grind [vars] + · grind [fv] + · grind [fv] + · rw [rename] + simp only [hwy', ↓reduceIte] + by_cases hwx : w = x + · subst w + simp only [← subst_def, subst, ↓reduceIte] + apply AlphaEquiv.trans (n := Term.abs z ((Term.abs x m1).rename y' z)) + · grind [AlphaEquiv.abs_rename] + · grind [rename, AlphaEquiv.refl] + · by_cases hwr : w ∈ r.fv + · obtain ⟨v, hv⟩ := HasFresh.fresh_exists (m1.vars ∪ r.vars ∪ {x, y', z, w}) + have hl : (Term.abs y' (((Term.abs w m1)[x := r]))) =α + (Term.abs y' (Term.abs v ((m1.rename w v)[x := r]))) := by + apply AlphaEquiv.context (c := Context.abs y' Context.hole) + apply (ih _ _ _ _ _ _ _).left <;> grind + have hr : (Term.abs z (Term.abs v (((m1.rename y' z).rename w v)[x := r]))) + =α (Term.abs z ((Term.abs w (m1.rename y' z))[x := r])) := by + apply AlphaEquiv.context (c := Context.abs z Context.hole) + apply AlphaEquiv.symm + apply (ih _ _ _ _ _ _ _).left <;> grind [rename_vars, rename_eq_sizeOf] + have hmid : (Term.abs y' (Term.abs v ((m1.rename w v)[x := r]))) =α + (Term.abs z (Term.abs v (((m1.rename y' z).rename w v)[x := r]))) := by + obtain ⟨u, hu⟩ := HasFresh.fresh_exists + ((Term.abs v ((m1.rename w v)[x := r])).vars ∪ + (Term.abs v (((m1.rename y' z).rename w v)[x := r])).vars ∪ + ((m1.rename w v).rename y' z)[x:=r].vars ∪ {y', z}) + apply AlphaEquiv.abs (y := u) + · grind + · have hvy' : v ≠ y' := by grind + have hvz : v ≠ z := by grind + simp only [rename, hvy', hvz, ↓reduceIte] + apply AlphaEquiv.context (c := Context.abs v Context.hole) + apply AlphaEquiv.trans (n := (((m1.rename w v).rename y' z)[x := r]).rename z u) + · apply AlphaEquiv.abs_elim + · grind [vars] + · apply (ih _ _ _ _ _ _ _).right <;> grind [vars, rename_vars, rename_eq_sizeOf] + · apply AlphaEquiv.rename_preserve + · grind [vars] + · rw [rename_comm] <;> grind [vars, AlphaEquiv.refl] + exact AlphaEquiv.trans hl <| AlphaEquiv.trans hmid hr + · obtain ⟨v, hv⟩ := HasFresh.fresh_exists + (m1[x:=r].vars ∪ (m1.rename y' z)[x:=r].vars ∪ ((Term.abs w m1)[x := r]).vars ∪ + ((Term.abs w (m1.rename y' z))[x := r]).vars ∪ {y', z}) + apply AlphaEquiv.abs (y := v) + · grind [vars, rename_vars] + · have hwz : w ≠ z := by grind [vars] + simp only [← subst_def, subst, hwx, ↓reduceIte, hwr, not_false_eq_true, rename, hwy', + hwz] + apply AlphaEquiv.context (c := Context.abs w Context.hole) + apply AlphaEquiv.abs_elim <;> grind [vars] + have hleft : ((Term.abs y m)[x:=r]) =α (Term.abs z ((m.rename y z)[x:=r])) := by + by_cases hyx : y = x + · subst y + simp only [← subst_def, subst.eq_2, ↓reduceIte] + obtain ⟨w, hw⟩ := HasFresh.fresh_exists (m.vars ∪ r.vars ∪ ((m.rename x z).subst x r).vars ∪ + {x, z}) + apply AlphaEquiv.abs (y := w) + · grind [vars, rename_unused, rename_vars] + · apply AlphaEquiv.trans (n := ((m.rename x z).rename z w)) + · grind [AlphaEquiv.refl, rename_concat] + · apply AlphaEquiv.rename_preserve + · grind [rename_vars] + · apply AlphaEquiv.symm + apply subst.non_free + grind [fv, rename_fv, rename_eq_sizeOf] + · by_cases hyr : y ∈ r.fv + · simp only [← subst_def, subst.eq_2, hyx, ↓reduceIte, hyr, not_true_eq_false, + Finset.union_insert, Finset.union_singleton] + have hw := fresh_notMem (insert x (insert y (m.vars ∪ r.vars))) + set w := fresh (insert x (insert y (m.vars ∪ r.vars))) + by_cases hzw' : z = w + · subst z + apply AlphaEquiv.refl + · apply AlphaEquiv.trans (n := (Term.abs z (((m.rename y w).rename w z)[x := r]))) + · apply hright <;> + grind [rename_eq_sizeOf, vars_either_fv_or_bv, rename_vars] + · rw [rename_concat] <;> grind [AlphaEquiv.refl] + · simp only [← subst_def, subst.eq_2, hyx, ↓reduceIte, hyr, not_false_eq_true] + apply hright <;> grind + exact ⟨hleft, hright m y (by rfl) (by grind)⟩ + +/-- Modulo α-equivalence, substituting an abstraction falls back to the fresh variable case only. + With this lemma, the three cases in the definition of subst can be reduced to one. +-/ +theorem subst.abs_fresh {m r : Term Var} {x y z : Var} : + z ∉ m.vars ∪ r.vars ∪ {x, y} → + ((Term.abs y m)[x := r]) =α (Term.abs z ((m.rename y z)[x := r])) := by + grind [subst.abs_fresh_helper] + +/-- Substituting α-equivalent terms produces α-equivalent terms. -/ +theorem subst.preserve_AlphaEquiv {m m' r r' : Term Var} {x : Var} : + m =α m' → r =α r' → (m[x := r]) =α (m'[x := r']) := by + refine (WellFounded.induction sizeOfWFRel.wf m + (C := fun m => ∀ (m' r r' : Term Var) (x : Var), + m =α m' → r =α r' → (m[x := r]) =α (m'[x := r'])) ?_) m' r r' x + intro m ih m' r r' x hmm' hrr' + have hmm'' := hmm' + cases hmm'' with + | @var y => + by_cases hyx : y = x + · simp only [← subst_def, subst, ↓reduceIte, hyx] + assumption + · simp only [← subst_def, subst, hyx] + apply AlphaEquiv.refl + | @abs z y y' m m' hz h1 => + obtain ⟨w, hw⟩ := HasFresh.fresh_exists (m.vars ∪ m'.vars ∪ r.vars ∪ r'.vars ∪ {x, y, y'}) + have h2 : ((Term.abs y m)[x := r]) =α (Term.abs w ((m.rename y w)[x := r])) := by + grind [subst.abs_fresh] + have h2' : ((Term.abs y' m')[x := r']) =α + (Term.abs w ((m'.rename y' w)[x := r'])) := by + grind [subst.abs_fresh] + have hbody : (m.rename y w) =α (m'.rename y' w) := by + apply AlphaEquiv.abs_elim <;> grind + have h3 : + (Term.abs w ((m.rename y w)[x := r])) =α (Term.abs w ((m'.rename y' w)[x := r'])) := by + apply AlphaEquiv.context (c := Context.abs w Context.hole) + apply ih <;> grind [rename_eq_sizeOf] + apply AlphaEquiv.trans (n := (Term.abs w ((m.rename y w)[x := r]))) <;> try assumption + apply AlphaEquiv.trans (n := (Term.abs w ((m'.rename y' w)[x := r']))) <;> try assumption + apply AlphaEquiv.symm + assumption + | @app m m' n n' hm hn => + simp only [← subst_def, subst] + apply AlphaEquiv.app <;> apply ih <;> grind + +/-- The relational definition of substitution coincides with the functional definition of + substitution, modulo α-equivalence. -/ +theorem Subst.relation_iff_function {m n r : Term Var} {x : Var} : + m.Subst x r n ↔ n =α (m[x := r]) := by + constructor + · intro h + induction h with + | @varHit x r => + simp only [← subst_def, subst, ↓reduceIte] + apply AlphaEquiv.refl + | @varMiss x y r hyx => + simp only [← subst_def, subst, hyx, ↓reduceIte] + apply AlphaEquiv.refl + | @absShadow x m r => + simp only [← subst_def, subst, ↓reduceIte] + apply AlphaEquiv.refl + | @absIn x y m r m' hy h ih => + have hyx : y ≠ x := by grind + have hyr : y ∉ r.fv := by grind + simp only [← subst_def, subst, hyx, ↓reduceIte, hyr, not_false_eq_true] + apply AlphaEquiv.context (c := Context.abs y Context.hole) + assumption + | @app m n x r m' n' h1 h2 ih1 ih2 => + simp only [← subst_def, subst] + apply AlphaEquiv.app <;> assumption + | @alpha m m' r r' n n' x hm hr hn h ih => + apply AlphaEquiv.trans (n := n) + · grind [AlphaEquiv.symm] + apply AlphaEquiv.trans (n := m[x := r]) <;> grind [subst.preserve_AlphaEquiv] + · intro h + apply Subst.alpha (m := m) (r := r) (n := m[x := r]) <;> grind [AlphaEquiv.symm, + AlphaEquiv.refl, Subst.function_to_relation] + +/-- Commutativity of substitution (a.k.a. the substitution lemma) -/ +theorem subst.commutativity {m r1 r2 : Term Var} {x y : Var} : + x ∉ r2.fv ∪ {y} → ((m[x := r1])[y := r2]) =α ((m[y := r2])[x := (r1[y := r2])]) := by + refine WellFounded.induction sizeOfWFRel.wf m + (C := fun m => ∀ (r1 r2 : Term Var) (x y : Var), + x ∉ r2.fv ∪ {y} → + ((m[x := r1])[y := r2]) =α ((m[y := r2])[x := (r1[y := r2])])) ?_ r1 r2 x y + intro m ih r1 r2 x y hxy + cases m with + | var z => + by_cases hzx : z = x + · subst z + have hxy' : x ≠ y := by grind + simp only [← subst_def, subst.eq_1, ↓reduceIte, hxy'] + apply AlphaEquiv.refl + · by_cases hzy : z = y + · subst z + simp only [← subst_def, subst.eq_1, hzx, ↓reduceIte] + apply AlphaEquiv.symm + apply subst.non_free + grind + · simp only [← subst_def, subst.eq_1, hzx, hzy, ↓reduceIte] + apply AlphaEquiv.refl + | abs z m => + obtain ⟨w, hw⟩ := HasFresh.fresh_exists + (m.vars ∪ r1.vars ∪ r2.vars ∪ (r1[y := r2]).vars ∪ {x, y, z}) + have hl : (((Term.abs z m)[x := r1])[y := r2]) =α + (Term.abs w (((m.rename z w)[x := r1])[y := r2])) := by + apply AlphaEquiv.trans (n := (((Term.abs w ((m.rename z w)[x := r1]))[y := r2]))) + · apply subst.preserve_AlphaEquiv + · apply subst.abs_fresh + grind + · apply AlphaEquiv.refl + · have hwy : w ≠ y := by grind + have hwr2 : w ∉ r2.fv := by grind [vars_either_fv_or_bv] + simp only [← subst_def, subst.eq_2, hwy, ↓reduceIte, hwr2, not_false_eq_true] + apply AlphaEquiv.refl + have hr : (Term.abs w (((m.rename z w)[y := r2])[x := (r1[y := r2])])) + =α (((Term.abs z m)[y := r2])[x := (r1[y := r2])]) := by + apply AlphaEquiv.symm + apply AlphaEquiv.trans (n := ((Term.abs w ((m.rename z w)[y := r2]))[x := (r1[y := r2])])) + · apply subst.preserve_AlphaEquiv + · apply subst.abs_fresh + grind + · apply AlphaEquiv.refl + · have hwx : w ≠ x := by grind + have hwr : w ∉ (r1.subst y r2).fv := by grind [vars_either_fv_or_bv] + simp only [← subst_def, subst.eq_2, hwx, ↓reduceIte, hwr, not_false_eq_true] + apply AlphaEquiv.refl + have hmid : (Term.abs w (((m.rename z w)[x := r1])[y := r2])) =α + (Term.abs w (((m.rename z w)[y := r2])[x := (r1[y := r2])])) := by + apply AlphaEquiv.context (c := Context.abs w Context.hole) + apply ih <;> grind [rename_eq_sizeOf] + exact AlphaEquiv.trans hl <| AlphaEquiv.trans hmid hr + | app m1 m2 => + simp only [← subst_def, subst.eq_3] + apply AlphaEquiv.app <;> apply ih <;> grind + +end LambdaCalculus.Named.Untyped.Term + +end Cslib From a3074634d1f66f75a98a51eca3b905de75ae4eb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Mon, 1 Jun 2026 20:56:39 +0200 Subject: [PATCH 02/12] adds paper to be formalized --- paper.pdf | Bin 0 -> 423802 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 paper.pdf diff --git a/paper.pdf b/paper.pdf new file mode 100644 index 0000000000000000000000000000000000000000..09d32c34bdb0747c48f117e58068decdfa46fe10 GIT binary patch literal 423802 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Ð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 O1shLj{(RLnYX2W6$FeX0 literal 0 HcmV?d00001 From 5445d35c39f10d5e94415f78d3c1511802ea3167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Mon, 8 Jun 2026 06:24:06 +0000 Subject: [PATCH 03/12] solves alphaEquiv_iff_alphaEquivPFresh while adding necessary swap property helper lemmas, updates references.bib to include alpha equivalence definition sources --- Cslib.lean | 3 + .../Named/Untyped/AlphaEquivDefs.lean | 145 +++++++++++ .../Named/Untyped/AlphaEquivEquiv.lean | 110 ++++++++ .../Named/Untyped/SwapProperties.lean | 234 ++++++++++++++++++ references.bib | 77 ++++++ 5 files changed, 569 insertions(+) create mode 100644 Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean create mode 100644 Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean create mode 100644 Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean diff --git a/Cslib.lean b/Cslib.lean index ddaa6bb22..f899d0118 100644 --- a/Cslib.lean +++ b/Cslib.lean @@ -114,6 +114,9 @@ public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.Properties public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.StrongNorm public import Cslib.Languages.LambdaCalculus.Named.Untyped.Basic public import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties +public import Cslib.Languages.LambdaCalculus.Named.Untyped.AlphaEquivDefs +public import Cslib.Languages.LambdaCalculus.Named.Untyped.AlphaEquivEquiv +public import Cslib.Languages.LambdaCalculus.Named.Untyped.SwapProperties public import Cslib.Logics.HML.Basic public import Cslib.Logics.HML.LogicalEquivalence public import Cslib.Logics.LinearLogic.CLL.Basic diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean new file mode 100644 index 000000000..3b42c90b2 --- /dev/null +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean @@ -0,0 +1,145 @@ +/- +Copyright (c) 2026 Chris Anto Fröschl. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Chris Anto Fröschl +-/ + +module + +public import Cslib.Languages.LambdaCalculus.Named.Untyped.Basic + +/-! # Definitions of α-equivalence + +Different definitions of α-equivalence + +## References + +* [Roy L. Crole, *Alpha equivalence equalities*][Crole2012] + +## Notation + +Following the paper, we use the following correspondence between the paper's abstract syntax +and the λ-calculus terms: + +| Paper | Lean | +|---------------|---------------------| +| `a` | `Term.var x` | +| `P(E₁, E₂)` | `Term.app m1 m2` | +| `B([a]E)` | `Term.abs x m` | +| `(z a) · E` | `m.swap x z` | +| `E{a'/a}` | `m.subst a (var a')`| + +TODO move this into Basic or original `AlphaEquiv` here + +-/ + +@[expose] public section + +namespace Cslib + +universe u + +variable {Var : Type u} [DecidableEq Var] [HasFresh Var] + +namespace LambdaCalculus.Named.Untyped.Term + +/-- The action of the transposition `(x y)` on a term: simultaneously swaps all occurrences + of `x` and `y`. Corresponds to `(x y) · E` in the paper. + + This action is also refered to as permutation +-/ +def swap (m : Term Var) (x y : Var) : Term Var := + match m with + | var z => var (if z = x then y else if z = y then x else z) + | abs z m' => abs (if z = x then y else if z = y then x else z) (m'.swap x y) + | app n1 n2 => app (n1.swap x y) (n2.swap x y) + +-- TODO '#' operator possible in Lean like in paper? +-- TODO stay closer to paper notation or already existing Basic.lean? + +/-- `∼p#` (Definition 3.2): α-equivalence via permutation with freshness side condition. +-/ +inductive AlphaEquivPFresh : Term Var → Term Var → Prop where + | var {x : Var} : AlphaEquivPFresh (var x) (var x) + /-- The only difference to `AlphaEquiv` using the weaker freshness `#` condition instead of + no occurence. Thus using the `swap` operation rather than `rename`. + -/ + | abs {y x1 x2 : Var} {m1 m2 : Term Var} : y ∉ ({x1, x2} : Finset Var) ∪ m1.fv ∪ m2.fv → + AlphaEquivPFresh (m1.swap x1 y) (m2.swap x2 y) → AlphaEquivPFresh (abs x1 m1) (abs x2 m2) + | app {m1 n1 m2 n2 : Term Var} : AlphaEquivPFresh m1 n1 → AlphaEquivPFresh m2 n2 → + AlphaEquivPFresh (app m1 m2) (app n1 n2) + +/-- `∼¹p` (Definition 3.3): α-equivalence via permutation with non-occurrence restricted + to the bodies only. + + This definition is analogous to the definition of α-equivalence for λ-expressions in + [Gabbay1999a] (Theorem 2.1, page 216). +-/ +inductive AlphaEquivP1 : Term Var → Term Var → Prop where + | var {x : Var} : AlphaEquivP1 (var x) (var x) + /-- Only difference to `AlphaEquiv` : non-occurrence condition is only on `m1, m2`, + not on `x1, x2`. + + When `y ∉ vars(m)`, the operations `rename` and `swap` coincide, so we use `rename` here + as in the original `AlphaEquiv`. + -/ + | abs {y x1 x2 m1 m2} : y ∉ m1.vars ∪ m2.vars → + AlphaEquivP1 (m1.rename x1 y) (m2.rename x2 y) → AlphaEquivP1 (abs x1 m1) (abs x2 m2) + | app {m1 n1 m2 n2 : Term Var} : AlphaEquivP1 m1 n1 → AlphaEquivP1 m2 n2 → + AlphaEquivP1 (app m1 m2) (app n1 n2) + +/-- `∼r` (Definition 3.4): α-equivalence via the traditional renaming axiom with + non-occurrence side condition. + + This definition is analogous to the definition of α-equivalence for λ-expressions most commonly + found in the literature, and certainly in most standard textbooks. One of the first formal + presentations is in [Church1941] and the same, though rather less formal approach is taken by + [Barendregt1985] (Definition 2.1.11, page 26). +-/ +inductive AlphaEquivR : Term Var → Term Var → Prop where + | refl {m : Term Var} : AlphaEquivR m m + | symm {m1 m2 : Term Var} : AlphaEquivR m1 m2 → AlphaEquivR m2 m1 + | trans {m1 m2 m3 : Term Var} : AlphaEquivR m1 m2 → AlphaEquivR m2 m3 → AlphaEquivR m1 m3 + | app {m1 n1 m2 n2 : Term Var} : AlphaEquivR m1 n1 → AlphaEquivR m2 n2 → + AlphaEquivR (app m1 m2) (app n1 n2) + /-- Body congruence under the same binder: `m ∼r m'` implies `λ x. m ∼r λ x. m'`. -/ + | abs_congr {x : Var} {m m' : Term Var} : + AlphaEquivR m m' → + AlphaEquivR (abs x m) (abs x m') + /-- Renaming axiom (α-conversion): + + Here `m[x := var x']` is capture-avoiding substitution + (the paper's `E{a'/a}`). -/ + | alpha {x x' : Var} {m : Term Var} : x' ∉ ({x} : Finset Var) ∪ m.vars → + AlphaEquivR (abs x m) (abs x' (m.subst x (var x'))) + +/-- `∼r#` (Definition 3.5): α-equivalence via the renaming axiom with freshness + side condition. + + Same as `∼r` (Definition 3.4), but the renaming axiom uses a freshness side condition + (`a' ∉ {a} ∪ fv(E)`) instead of a non-occurrence condition (`a' ∉ {a} ∪ vars(E)`). + + This is analogous to the definition of α-equivalence for λ-expressions one finds in + [Hindley1988] (Section 1B, page 9) +-/ +inductive AlphaEquivRFresh : Term Var → Term Var → Prop where + | refl {m : Term Var} : AlphaEquivRFresh m m + | symm {m1 m2 : Term Var} : AlphaEquivRFresh m1 m2 → AlphaEquivRFresh m2 m1 + | trans {m1 m2 m3 : Term Var} : AlphaEquivRFresh m1 m2 → AlphaEquivRFresh m2 m3 → + AlphaEquivRFresh m1 m3 + | app {m1 m1' m2 m2' : Term Var} : + AlphaEquivRFresh m1 m1' → AlphaEquivRFresh m2 m2' → + AlphaEquivRFresh (app m1 m2) (app m1' m2') + /-- Body congruence under the same binder. -/ + | abs_congr {x : Var} {m m' : Term Var} : + AlphaEquivRFresh m m' → + AlphaEquivRFresh (abs x m) (abs x m') + /-- Renaming axiom with freshness: given `x' ∉ {x} ∪ fv(m)`, + `λ x. m ∼r# λ x'. m[x := var x']`. -/ + | alpha {x x' : Var} {m : Term Var} : + x' ∉ ({x} : Finset Var) ∪ m.fv → + AlphaEquivRFresh (abs x m) (abs x' (m.subst x (var x'))) + +end LambdaCalculus.Named.Untyped.Term + +end Cslib diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean new file mode 100644 index 000000000..e7b4e7f73 --- /dev/null +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean @@ -0,0 +1,110 @@ +/- +Copyright (c) 2026 Chris Anto Fröschl. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Chris Anto Fröschl +-/ + +module + +import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties +import Cslib.Languages.LambdaCalculus.Named.Untyped.SwapProperties + +/-! # Equivalence of α-equivalence definitions + +Theorems showing equivalence of multiple α-equivalence. + +## References + +* [Roy L. Crole, *Alpha equivalence equalities*][Crole2012] +-/ + +namespace Cslib + +universe u + +variable {Var : Type u} [DecidableEq Var] [HasFresh Var] + +namespace LambdaCalculus.Named.Untyped.Term + +/- + Non-occurrence implies freshness. +-/ +omit [HasFresh Var] in +lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : AlphaEquiv m n → AlphaEquivPFresh m n := by + intro h + induction h with + | var => constructor + | abs z_h1 ih1 ih2 => + rename_i x z x1 x2 m1 m2 + have h1 : z ∉ ({x1, x2} : Finset Var) ∪ m1.fv ∪ m2.fv := by + rw [vars_either_fv_or_bv] at z_h1 + rw [vars_either_fv_or_bv] at z_h1 + simp_all + have h2 : AlphaEquivPFresh (m1.swap x1 z) (m2.swap x2 z) := by + grind [swap_eq_rename_of_not_mem_vars] + apply AlphaEquivPFresh.abs h1 h2 + | app h1 h2 ih1 ih2 => exact AlphaEquivPFresh.app ih1 ih2 + +lemma alphaEquivPFresh_of_alphaEquiv {m n : Term Var} : AlphaEquivPFresh m n → AlphaEquiv m n := by + intro h + induction h with + | var => constructor + | abs hy h ih => + rename_i u a b E E' + have h1 : u ∉ E.fv := by aesop + have h2 : u ∉ E'.fv := by aesop + -- TODO do this whole proof via Lemma 6.2 using the agreement set (AS) argumentation + + -- TODO how to formalize the "pick any z ≠ u" + + obtain ⟨m1', hm1', hm1''⟩ := exists_alphaEquiv_not_mem_vars h1 + obtain ⟨m2', hm2', hm2''⟩ := exists_alphaEquiv_not_mem_vars h2 + + have h_swap_preserve : + (E.swap a u).AlphaEquiv (m1'.swap a u) ∧ (E'.swap b u).AlphaEquiv (m2'.swap b u) := by + exact ⟨AlphaEquiv.swap_preserve hm1', AlphaEquiv.swap_preserve hm2'⟩; + + have h_trans : (m1'.rename a u).AlphaEquiv (m2'.rename b u) := by + rw [← swap_eq_rename_of_not_mem_vars hm1''] + rw [← swap_eq_rename_of_not_mem_vars hm2''] + exact AlphaEquiv.trans + ( AlphaEquiv.symm h_swap_preserve.1 ) ( AlphaEquiv.trans ih h_swap_preserve.2 ); + + have h_abs1 : (abs a m1').AlphaEquiv (abs b m2') := by + apply_rules [ AlphaEquiv.abs ]; + grind [AlphaEquiv.trans]; + have h_abs2 : (abs a E).AlphaEquiv (abs a m1') ∧ (abs b m2').AlphaEquiv (abs b E') := by + exact ⟨ + AlphaEquiv.context ( c := Context.abs a Context.hole ) hm1', + AlphaEquiv.context ( c := Context.abs b Context.hole ) hm2'.symm + ⟩; + exact AlphaEquiv.trans h_abs2.1 ( AlphaEquiv.trans h_abs1 h_abs2.2 ); + | app _ _ ih1 ih2 => exact AlphaEquiv.app ih1 ih2 + +/-! See [Crole2012] Theorem 4.1 -/ +theorem alphaEquiv_iff_alphaEquivPFresh (m n : Term Var) : AlphaEquiv m n ↔ AlphaEquivPFresh m n := + ⟨alphaEquiv_of_alphaEquivPFresh, alphaEquivPFresh_of_alphaEquiv⟩ + +/-! See [Crole2012] Theorem 4.2 -/ +theorem alphaEquiv_iff_alphaEquivP1 (m n : Term Var) : + AlphaEquiv m n ↔ AlphaEquivP1 m n := by + sorry + +/-! See [Crole2012] Theorem 4.4 -/ +theorem alphaEquiv_iff_alphaEquivR (m n : Term Var) : + AlphaEquiv m n ↔ AlphaEquivR m n := by + sorry + +/-! See [Crole2012] Theorem 4.5 -/ +theorem alphaEquiv_iff_alphaEquivRFresh (m n : Term Var) : + AlphaEquiv m n ↔ AlphaEquivRFresh m n := by + sorry + +/-! See [Crole2012] Theorem 4.6 -/ +theorem alphaEquivR_iff_alphaEquivRFresh (m n : Term Var) : + AlphaEquivR m n ↔ AlphaEquivRFresh m n := by + sorry + +end LambdaCalculus.Named.Untyped.Term + +end Cslib diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean new file mode 100644 index 000000000..fabfa9121 --- /dev/null +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean @@ -0,0 +1,234 @@ +/- +Copyright (c) 2026 Chris Anto Fröschl. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Chris Anto Fröschl +-/ + +module + +public import Cslib.Languages.LambdaCalculus.Named.Untyped.AlphaEquivDefs +public import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties + +/-! # Properties of the swap (transposition) operation on lambda terms + +Helper lemmas for reasoning about `Term.swap` and its interaction with +`AlphaEquiv`, `rename`, `vars`, and `fv`. + +## References + +* [Roy L. Crole, *Alpha equivalence equalities*][Crole2012], Section 6 +-/ + +@[expose] public section + +namespace Cslib + +universe u + +variable {Var : Type u} [DecidableEq Var] + +namespace LambdaCalculus.Named.Untyped.Term + +/-! ### Basic properties of swap -/ + +@[simp] +lemma swap_self {m : Term Var} {x : Var} : m.swap x x = m := by + induction m <;> simp [swap] <;> grind + +lemma swap_comm {m : Term Var} {x y : Var} : m.swap x y = m.swap y x := by + induction m <;> simp [swap] <;> grind + +@[simp] +lemma swap_involutive {m : Term Var} {x y : Var} : (m.swap x y).swap x y = m := by + induction m <;> simp [swap] <;> grind + +@[simp] +lemma swap_preserves_sizeOf {m : Term Var} {x y : Var} : sizeOf (m.swap x y) = sizeOf m := by + induction m <;> simp [swap] <;> grind + +@[simp] +lemma swap_unused {m : Term Var} {x y : Var} : x ∉ m.vars → y ∉ m.vars → m.swap x y = m := by + induction m <;> grind [swap, vars] + +/-- When `y ∉ m.vars`, `swap x y` and `rename x y` coincide. -/ +lemma swap_eq_rename_of_not_mem_vars {m : Term Var} {x y : Var} (hy : y ∉ m.vars) + : m.swap x y = m.rename x y := by + induction m with + | var z => + unfold swap rename + grind [Term.vars] + | abs z m ih => + simp_all +decide [Term.swap, Term.rename, Term.vars]; + grind + | app n1 n2 ih1 ih2 => + simp_all +decide [Term.swap, Term.rename, Term.vars] + +/-- The set of free variables after a swap. -/ +lemma swap_fv {m : Term Var} {x y : Var} : + (m.swap x y).fv = m.fv.image (fun z => if z = x then y else if z = y then x else z) := by + induction m with + | var z => + unfold fv + aesop + | abs z m ih => + simp_all +decide only [Term.swap, Term.fv] + simp [Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff] + grind + | app m n ih1 ih2 => + simp_all +decide only [Term.swap, Term.fv] + rw [Finset.image_union] + +/-- Swapping preserves non-membership in fv. -/ +lemma fresh_swap {m : Term Var} {x y z : Var} (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.fv) + : z ∉ (m.swap x y).fv := by + rw [swap_fv] + grind + +/-- The set of vars after a swap. -/ +lemma swap_vars {m : Term Var} {x y z : Var} (hzm : z ∉ m.vars) + : (m.swap x y).vars = m.vars.image (fun z => if z = x then y else if z = y then x else z) := by + induction m with + | var w => + simp +decide [Term.swap, Term.vars] + | abs w m ih => simp_all +decide [Term.swap, Term.vars] + | app m n ih1 ih2 => + simp_all +decide only [Term.swap, Term.vars] + rw [Finset.image_union] + grind + +/-- Swapping preserves non-membership in vars. -/ +lemma not_mem_vars_swap {m : Term Var} {x y z : Var} (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.vars) + : z ∉ (m.swap x y).vars := by + rw [swap_vars hzm] + grind + +/-! ### Swap-rename commutation -/ + +/-- Helper function: the action of swap on a single variable. -/ +@[simp] +def swapVar (u v z : Var) : Var := if z = u then v else if z = v then u else z + +/-- swapVar is a fixed point for variables outside {u, v}. -/ +@[simp] +lemma swapVar_fixed {u v z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : swapVar u v z = z := by simp_all + +/- `swapVar` is injective. -/ +lemma swapVar_injective (u v : Var) : Function.Injective (swapVar u v) := by + unfold Function.Injective + intro a b + unfold swapVar + aesop + +/-- `swap` and `rename` commute. -/ +lemma swap_rename_comm {m : Term Var} {u v x y : Var} : + (m.swap u v).rename (swapVar u v x) (swapVar u v y) = (m.rename x y).swap u v := by + induction m with + | var z => + simp_all +decide [Term.swap, Term.rename, swapVar] + grind + | abs z m ih => + simp_all +decide [Term.swap, Term.rename, swapVar] + grind + | app m n ih1 ih2 => + simp_all +decide [Term.swap, Term.rename, swapVar] + +lemma swap_rename_comm' {m : Term Var} {u v x z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : + (m.swap u v).rename (swapVar u v x) z = (m.rename x z).swap u v := by + rw [← @swap_rename_comm _ _ m u v x z] + simp_all + +variable [HasFresh Var] + +/-! ### Lemma 6.1: Swap preserves α-equivalence -/ + +-- TODO cleanup below proofs + +/- Lemma 6.1 from [Crole2012]. -/ +lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : + m =α m' → (m.swap u v) =α (m'.swap u v) := by + by_contra h; + -- Let's choose any $m$ and $m'$ such that $m =α m'$ but $(m.swap u v) ≠α (m'.swap u v)$. + obtain ⟨m, m', h_eq, h_neq⟩ : ∃ m m' : Term Var, m =α m' ∧ ¬(m.swap u v) =α (m'.swap u v) := by + grind; + obtain ⟨m, m', h_eq, h_neq, h_min⟩ : ∃ m m' : Term Var, m =α m' ∧ ¬(m.swap u v) =α (m'.swap u v) ∧ ∀ n n' : Term Var, n =α n' → sizeOf n < sizeOf m → (n.swap u v) =α (n'.swap u v) := by + have h_wf : WellFounded (fun m n : ℕ => m < n) := by + exact wellFounded_lt; + have := h_wf.has_min { n : ℕ | ∃ m m' : Term Var, m =α m' ∧ ¬ ( m.swap u v ) =α ( m'.swap u v ) ∧ n = sizeOf m } ⟨ _, ⟨ m, m', h_eq, h_neq, rfl ⟩ ⟩; + obtain ⟨ a, ⟨ m, m', h_eq, h_neq, rfl ⟩, ha ⟩ := this; exact ⟨ m, m', h_eq, h_neq, fun n n' h_eq' h_lt => Classical.not_not.1 fun h_neq' => ha _ ⟨ n, n', h_eq', h_neq', rfl ⟩ h_lt ⟩ ; + obtain ⟨x1, x2, m1, m2, h_eq⟩ : ∃ x1 x2 : Var, ∃ m1 m2 : Term Var, m = Term.abs x1 m1 ∧ m' = Term.abs x2 m2 ∧ ∃ y : Var, y ∉ m1.vars ∪ m2.vars ∪ {x1, x2} ∧ (m1.rename x1 y) =α (m2.rename x2 y) := by + all_goals rcases h_eq with ⟨ ⟩; + · exact False.elim <| h_neq <| AlphaEquiv.refl _; + · grind; + · exact False.elim <| h_neq <| AlphaEquiv.app ( h_min _ _ ‹_› <| by simp +arith +decide ) ( h_min _ _ ‹_› <| by simp +arith +decide ); + obtain ⟨y, hy₁, hy₂⟩ := h_eq.2.2; + -- Pick z fresh for m1.vars ∪ m2.vars ∪ {x1, x2, u, v}. + obtain ⟨z, hz⟩ : ∃ z : Var, z ∉ m1.vars ∪ m2.vars ∪ {x1, x2, u, v} := by + exact?; + -- By AlphaEquiv.abs_elim with z: m1.rename x1 z =α m2.rename x2 z. + have hz_eq : (m1.rename x1 z) =α (m2.rename x2 z) := by + apply AlphaEquiv.abs_elim; all_goals grind; + -- By swap_rename_comm' (z ≠ u, z ≠ v): (m1.swap u v).rename (sv x1) z =α (m2.swap u v).rename (sv x2) z. + have hz_swap : ((m1.swap u v).rename (swapVar u v x1) z) =α ((m2.swap u v).rename (swapVar u v x2) z) := by + have hz_swap : ((m1.swap u v).rename (swapVar u v x1) z) = ((m1.rename x1 z).swap u v) ∧ ((m2.swap u v).rename (swapVar u v x2) z) = ((m2.rename x2 z).swap u v) := by + apply And.intro; + · apply swap_rename_comm'; all_goals grind; + · apply swap_rename_comm'; all_goals grind; + grind +suggestions; + -- Apply AlphaEquiv.abs with witness z. + have hz_abs : (Term.abs (swapVar u v x1) (m1.swap u v)) =α (Term.abs (swapVar u v x2) (m2.swap u v)) := by + apply AlphaEquiv.abs; + any_goals assumption; + simp_all +decide [ Finset.mem_union, Finset.mem_singleton ]; + grind +suggestions; + exact h_neq ( by simpa [ h_eq ] using hz_abs ) + +/-! ### Lemma 6.2: Agreement on free variables implies α-equivalence -/ + +/- +Helper: the composition (z u) ∘ (u a) agrees with (z a) on variables + outside {u, z}. +-/ +omit [HasFresh Var] in +lemma swap_comp_eq_swap_of_not_eq {x a u z : Var} + (hxu : x ≠ u) (hxz : x ≠ z) : + swapVar z u (swapVar u a x) = swapVar z a x := by + unfold swapVar; aesop; + +/- +Lemma 6.2 part 1 from [Crole2012]: If two permutations agree on all occurring + variables, their actions are syntactically equal. + + Specialized: if `u, z ∉ vars(m)`, then `(m.swap u a).swap z u = m.swap z a`. + TODO do unspecialized format +-/ +omit [HasFresh Var] in +lemma swap_comp_eq_of_not_mem_vars {m : Term Var} {a u z : Var} + (hu : u ∉ m.vars) (hz : z ∉ m.vars) : + (m.swap u a).swap z u = m.swap z a := by + induction m; + · simp_all +decide [ Term.swap, Term.vars ]; + grind; + · simp_all +decide [ Term.swap, Term.vars ]; + split_ifs <;> simp_all +decide [ eq_comm ]; + · simp_all +decide [ Term.swap, Term.vars ] + +/- +Lemma 6.6 from [Crole2012] (Barendregt variable convention): + For any term `m` and variable `y` with `y ∉ fv(m)`, + there exists `m'` alpha-equivalent to `m` with `y ∉ vars(m')`. +-/ +lemma exists_alphaEquiv_not_mem_vars {m : Term Var} {y : Var} + (hy : y ∉ m.fv) : ∃ m', m =α m' ∧ y ∉ m'.vars := by + by_contra h; + convert Classical.byContradiction fun h' => ?_; + convert h'; + convert Classical.not_not; + simp_all only [not_exists, not_and, Decidable.not_not, not_false_eq_true, not_true_eq_false] + convert h ( m.rename y ( HasFresh.fresh ( m.vars ∪ { y } ) ) ) ( by + grind +suggestions ) using 1 + simp +decide [rename_vars] + grind + +end LambdaCalculus.Named.Untyped.Term + +end Cslib diff --git a/references.bib b/references.bib index 2cccb928f..55239bb1b 100644 --- a/references.bib +++ b/references.bib @@ -277,3 +277,80 @@ @incollection{WinskelNielsen1995 url = {https://doi.org/10.1093/oso/9780198537809.003.0001}, eprint = {https://academic.oup.com/book/0/chapter/421962123/chapter-pdf/52352653/isbn-9780198537809-book-part-1.pdf}, } + +@article{Crole2012, + title={Alpha equivalence equalities}, + journal={Theoretical Computer Science}, + volume={433}, + pages={1-19}, + year={2012}, + issn={0304-3975}, + doi={https://doi.org/10.1016/j.tcs.2012.01.030}, + url={https://www.sciencedirect.com/science/article/pii/S0304397512000667}, + author={Roy L. Crole}, + keywords={-equivalence, Atom, Context, -expression, Permutation action, Renaming, Variable binding}, + abstract={Programming languages and logics, which are pervasive in Computer Science, have syntax which involves variable binding constructors. As such, reasoning about such languages in general, and formal reasoning in particular (such as within a theorem prover), requires frameworks within which the syntax may be properly represented. One key requirement is a correct representation of α-equivalence. The current literature provides a number of different definitions of the notion of α-equivalence. The formal definitions may be nameless as in the approach of de Bruijn, or have explicit names, as in the approaches that use either a renaming/substitution axiom, or instead use a notion of variable swapping. The first contribution of this paper is to draw together five definitions of α-equivalence relations and to prove formally and in detail, but using mathematics, that the relations are all equal. There are two key reasons for doing this: Firstly, the literature has many examples of proofs of results involving α-equivalence which contain technical errors. Such examples concern both the application of α-equivalence, and the meta-theory of α-equivalence itself. Secondly, the literature does not currently contain detailed presentations of such results. The point of giving the detail is partly to avoid falling into common error-traps, but mainly to provide clear mathematical machinery that will be useful to those working in the area. This includes systems of inductive rules and proofs by induction, and clear accounts of the key lemmas that support the main proofs. The second contribution is to provide two definitions of α-equivalence relations over (program) contexts, namely expressions with a single meta-variable (or “hole”). One of the definitions is already in the literature, and the other is new. We prove some basic properties of α-equivalence on contexts, and show that the two definitions give rise to the same relation.} +} + +@InProceedings{Gabbay1999, + author={Murdoch Gabbay and Andrew Pitts}, + title={A New Approach to Abstract Syntax Involving Binders}, + booktitle={Proceedings of the Fourteenth Annual IEEE Symp. on Logic in Computer Science, {LICS} 1999}, + year=1999, + editor={Giuseppe Longo}, + month={July}, + pages={214--224}, + location={Trento, Italy}, + publisher={IEEE Computer Society Press} +} + +@article{Gabbay2002, + author={Gabbay, Murdoch J. and Pitts, Andrew M.}, + title={A New Approach to Abstract Syntax with Variable Binding}, + year={2002}, + issue_date={Jul 2002}, + publisher={Springer-Verlag}, + address={Berlin, Heidelberg}, + volume={13}, + number={3–5}, + issn={0934-5043}, + url={https://doi.org/10.1007/s001650200016}, + doi={10.1007/s001650200016}, + abstract={The permutation model of set theory with atoms (FM-sets), devised by Fraenkel and Mostowski in the 1930s, supports notions of ‘name-abstraction’ and ‘fresh name’ that provide a new way to represent, compute with, and reason about the syntax of formal systems involving variable-binding operations. Inductively defined FM-sets involving the name-abstraction set former (together with Cartesian product and disjoint union) can correctly encode syntax modulo renaming of bound variables. In this way, the standard theory of algebraic data types can be extended to encompass signatures involving binding operators. In particular, there is an associated notion of structural recursion for defining syntax-manipulating functions (such as capture avoiding substitution, set of free variables, etc.) and a notion of proof by structural induction, both of which remain pleasingly close to informal practice in computer science.}, + journal={Form. Asp. Comput.}, + month=jul, + pages={341–363}, + numpages={23}, + keywords={Keywords: Abstract syntax; Alpha-conversion; Permutation actions; Set theory; Structural induction} +} + +@book{Barendregt1985, + author={Hendrik Pieter Barendregt}, + title={The lambda calculus - its syntax and semantics}, + series={Studies in logic and the foundations of mathematics}, + volume={103}, + publisher={North-Holland}, + year={1985}, + isbn={978-0-444-86748-3}, + timestamp={Fri, 28 Jun 2019 12:45:52 +0200}, + biburl={https://dblp.org/rec/books/daglib/0067558.bib}, + bibsource={dblp computer science bibliography, https://dblp.org} +} + +@book{Church1941, + ISBN={9780691083940}, + author={ALONZO CHURCH}, + publisher={Princeton University Press}, + title={The Calculi of Lambda Conversion. (AM-6)}, + year={1941} +} + +@book{Hindley1988, + title={Introduction to Combinators and $\lambda$-Calculus}, + author={Hindley, J. Roger and Seldin, Jonathan P.}, + series={London Mathematical Society Student Texts}, + volume={1}, + year={1988}, + publisher={Cambridge University Press}, + address={Cambridge, UK} +} From 7208fb71b2dea7b271be39557b2fa550c35d5fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Sat, 27 Jun 2026 19:27:50 +0000 Subject: [PATCH 04/12] converges theorem 4.1 much closer to how the paper proof is structured, introduces agreement sets --- .../Named/Untyped/AlphaEquivDefs.lean | 119 +++--- .../Named/Untyped/AlphaEquivEquiv.lean | 125 ++++-- .../LambdaCalculus/Named/Untyped/Basic.lean | 11 +- .../Named/Untyped/Properties.lean | 35 +- .../Named/Untyped/SwapProperties.lean | 383 +++++++++++++----- 5 files changed, 473 insertions(+), 200 deletions(-) diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean index 3b42c90b2..ca150ef0a 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean @@ -10,16 +10,32 @@ public import Cslib.Languages.LambdaCalculus.Named.Untyped.Basic /-! # Definitions of α-equivalence -Different definitions of α-equivalence +Five definitions of α-equivalence from [Crole2012], each capturing the same equivalence +relation on expressions: + +* `∼p` (Definition 3.1): Permutation-based with non-occurrence side condition (`AlphaEquiv`) +* `∼p#` (Definition 3.2): Permutation-based with freshness side condition (`AlphaEquivPFresh`) +* `∼¹p` (Definition 3.3): Permutation-based with non-occurrence on bodies only (`AlphaEquivP1`) +* `∼r` (Definition 3.4): Traditional renaming axiom with non-occurrence (`AlphaEquivR`) +* `∼r#` (Definition 3.5): Renaming axiom with freshness (`AlphaEquivRFresh`) + +The first three definitions use the notion of *atom swapping* (transposition), introduced in +[Gabbay2002] (Section 2, page 3), as a primitive operation for defining α-equivalence. The +key observation from [Gabbay2002] is that α-equivalence can be defined using the notion of +atom swapping in lieu of the traditional renaming/substitution approach. + +The last two definitions use the traditional capture-avoiding substitution (renaming) axiom. ## References * [Roy L. Crole, *Alpha equivalence equalities*][Crole2012] +* [M. Gabbay and A. Pitts, *A New Approach to Abstract Syntax with Variable + Binding*][Gabbay2002] ## Notation -Following the paper, we use the following correspondence between the paper's abstract syntax -and the λ-calculus terms: +Following the paper [Crole2012], we use the following correspondence between the paper's +abstract syntax and the λ-calculus terms: | Paper | Lean | |---------------|---------------------| @@ -29,8 +45,6 @@ and the λ-calculus terms: | `(z a) · E` | `m.swap x z` | | `E{a'/a}` | `m.subst a (var a')`| -TODO move this into Basic or original `AlphaEquiv` here - -/ @[expose] public section @@ -44,9 +58,7 @@ variable {Var : Type u} [DecidableEq Var] [HasFresh Var] namespace LambdaCalculus.Named.Untyped.Term /-- The action of the transposition `(x y)` on a term: simultaneously swaps all occurrences - of `x` and `y`. Corresponds to `(x y) · E` in the paper. - - This action is also refered to as permutation +of `x` and `y`. Corresponds to `(x y) · E` in [Crole2012] (Section 2). -/ def swap (m : Term Var) (x y : Var) : Term Var := match m with @@ -54,88 +66,85 @@ def swap (m : Term Var) (x y : Var) : Term Var := | abs z m' => abs (if z = x then y else if z = y then x else z) (m'.swap x y) | app n1 n2 => app (n1.swap x y) (n2.swap x y) --- TODO '#' operator possible in Lean like in paper? --- TODO stay closer to paper notation or already existing Basic.lean? +/-- **Definition 3.2** [Crole2012]: `∼p#` — α-equivalence via permutation with freshness +side condition. -/-- `∼p#` (Definition 3.2): α-equivalence via permutation with freshness side condition. +The rule `pi#` uses the freshness condition `z # a, b, E, E'` (i.e., `z ∉ fv(E) ∪ fv(E') ∪ +{a, b}`) instead of the non-occurrence condition `z ∉ vars(E) ∪ vars(E') ∪ {a, b}` used in +Definition 3.1 (`AlphaEquiv`). -/ inductive AlphaEquivPFresh : Term Var → Term Var → Prop where | var {x : Var} : AlphaEquivPFresh (var x) (var x) - /-- The only difference to `AlphaEquiv` using the weaker freshness `#` condition instead of - no occurence. Thus using the `swap` operation rather than `rename`. - -/ - | abs {y x1 x2 : Var} {m1 m2 : Term Var} : y ∉ ({x1, x2} : Finset Var) ∪ m1.fv ∪ m2.fv → - AlphaEquivPFresh (m1.swap x1 y) (m2.swap x2 y) → AlphaEquivPFresh (abs x1 m1) (abs x2 m2) - | app {m1 n1 m2 n2 : Term Var} : AlphaEquivPFresh m1 n1 → AlphaEquivPFresh m2 n2 → + | abs {y x1 x2 : Var} {m1 m2 : Term Var} : + y ∉ ({x1, x2} : Finset Var) ∪ m1.fv ∪ m2.fv → + AlphaEquivPFresh (m1.swap x1 y) (m2.swap x2 y) → + AlphaEquivPFresh (abs x1 m1) (abs x2 m2) + | app {m1 n1 m2 n2 : Term Var} : + AlphaEquivPFresh m1 n1 → AlphaEquivPFresh m2 n2 → AlphaEquivPFresh (app m1 m2) (app n1 n2) -/-- `∼¹p` (Definition 3.3): α-equivalence via permutation with non-occurrence restricted - to the bodies only. +/-- **Definition 3.3** [Crole2012]: `∼¹p` — α-equivalence via permutation with non-occurrence +restricted to the bodies only. - This definition is analogous to the definition of α-equivalence for λ-expressions in - [Gabbay1999a] (Theorem 2.1, page 216). +This definition is analogous to the definition of α-equivalence for λ-expressions in +[Gabbay1999a] (Theorem 2.1, page 216). The notation `∼¹p` arises from three variants `∼ⁱp` +of `∼p` considered in Proposition 4.3 of [Crole2012]. -/ inductive AlphaEquivP1 : Term Var → Term Var → Prop where | var {x : Var} : AlphaEquivP1 (var x) (var x) - /-- Only difference to `AlphaEquiv` : non-occurrence condition is only on `m1, m2`, - not on `x1, x2`. - - When `y ∉ vars(m)`, the operations `rename` and `swap` coincide, so we use `rename` here - as in the original `AlphaEquiv`. - -/ - | abs {y x1 x2 m1 m2} : y ∉ m1.vars ∪ m2.vars → - AlphaEquivP1 (m1.rename x1 y) (m2.rename x2 y) → AlphaEquivP1 (abs x1 m1) (abs x2 m2) - | app {m1 n1 m2 n2 : Term Var} : AlphaEquivP1 m1 n1 → AlphaEquivP1 m2 n2 → + | abs {y x1 x2 m1 m2} : + y ∉ m1.vars ∪ m2.vars → + AlphaEquivP1 (m1.rename x1 y) (m2.rename x2 y) → + AlphaEquivP1 (abs x1 m1) (abs x2 m2) + | app {m1 n1 m2 n2 : Term Var} : + AlphaEquivP1 m1 n1 → AlphaEquivP1 m2 n2 → AlphaEquivP1 (app m1 m2) (app n1 n2) -/-- `∼r` (Definition 3.4): α-equivalence via the traditional renaming axiom with - non-occurrence side condition. +/-- **Definition 3.4** [Crole2012]: `∼r` — α-equivalence via the traditional renaming axiom +with non-occurrence side condition. - This definition is analogous to the definition of α-equivalence for λ-expressions most commonly - found in the literature, and certainly in most standard textbooks. One of the first formal - presentations is in [Church1941] and the same, though rather less formal approach is taken by - [Barendregt1985] (Definition 2.1.11, page 26). +This definition is analogous to the definition of α-equivalence for λ-expressions most commonly +found in the literature, and certainly in most standard textbooks. One of the first formal +presentations is in [Church1941] and the same, though rather less formal approach is taken by +[Barendregt1985] (Definition 2.1.11, page 26). -/ inductive AlphaEquivR : Term Var → Term Var → Prop where | refl {m : Term Var} : AlphaEquivR m m | symm {m1 m2 : Term Var} : AlphaEquivR m1 m2 → AlphaEquivR m2 m1 - | trans {m1 m2 m3 : Term Var} : AlphaEquivR m1 m2 → AlphaEquivR m2 m3 → AlphaEquivR m1 m3 - | app {m1 n1 m2 n2 : Term Var} : AlphaEquivR m1 n1 → AlphaEquivR m2 n2 → + | trans {m1 m2 m3 : Term Var} : + AlphaEquivR m1 m2 → AlphaEquivR m2 m3 → AlphaEquivR m1 m3 + | app {m1 n1 m2 n2 : Term Var} : + AlphaEquivR m1 n1 → AlphaEquivR m2 n2 → AlphaEquivR (app m1 m2) (app n1 n2) - /-- Body congruence under the same binder: `m ∼r m'` implies `λ x. m ∼r λ x. m'`. -/ | abs_congr {x : Var} {m m' : Term Var} : AlphaEquivR m m' → AlphaEquivR (abs x m) (abs x m') - /-- Renaming axiom (α-conversion): - - Here `m[x := var x']` is capture-avoiding substitution - (the paper's `E{a'/a}`). -/ - | alpha {x x' : Var} {m : Term Var} : x' ∉ ({x} : Finset Var) ∪ m.vars → + | alpha {x x' : Var} {m : Term Var} : + x' ∉ ({x} : Finset Var) ∪ m.vars → AlphaEquivR (abs x m) (abs x' (m.subst x (var x'))) -/-- `∼r#` (Definition 3.5): α-equivalence via the renaming axiom with freshness - side condition. +/-- **Definition 3.5** [Crole2012]: `∼r#` — α-equivalence via the renaming axiom with +freshness side condition. - Same as `∼r` (Definition 3.4), but the renaming axiom uses a freshness side condition - (`a' ∉ {a} ∪ fv(E)`) instead of a non-occurrence condition (`a' ∉ {a} ∪ vars(E)`). +Same as `∼r` (Definition 3.4), but the renaming axiom uses a freshness side condition +(`a' ∉ {a} ∪ fv(E)`) instead of a non-occurrence condition (`a' ∉ {a} ∪ vars(E)`). - This is analogous to the definition of α-equivalence for λ-expressions one finds in - [Hindley1988] (Section 1B, page 9) +This is analogous to the definition of α-equivalence for λ-expressions one finds in +[Hindley1988] (Section 1B, page 9). -/ inductive AlphaEquivRFresh : Term Var → Term Var → Prop where | refl {m : Term Var} : AlphaEquivRFresh m m - | symm {m1 m2 : Term Var} : AlphaEquivRFresh m1 m2 → AlphaEquivRFresh m2 m1 - | trans {m1 m2 m3 : Term Var} : AlphaEquivRFresh m1 m2 → AlphaEquivRFresh m2 m3 → + | symm {m1 m2 : Term Var} : + AlphaEquivRFresh m1 m2 → AlphaEquivRFresh m2 m1 + | trans {m1 m2 m3 : Term Var} : + AlphaEquivRFresh m1 m2 → AlphaEquivRFresh m2 m3 → AlphaEquivRFresh m1 m3 | app {m1 m1' m2 m2' : Term Var} : AlphaEquivRFresh m1 m1' → AlphaEquivRFresh m2 m2' → AlphaEquivRFresh (app m1 m2) (app m1' m2') - /-- Body congruence under the same binder. -/ | abs_congr {x : Var} {m m' : Term Var} : AlphaEquivRFresh m m' → AlphaEquivRFresh (abs x m) (abs x m') - /-- Renaming axiom with freshness: given `x' ∉ {x} ∪ fv(m)`, - `λ x. m ∼r# λ x'. m[x := var x']`. -/ | alpha {x x' : Var} {m : Term Var} : x' ∉ ({x} : Finset Var) ∪ m.fv → AlphaEquivRFresh (abs x m) (abs x' (m.subst x (var x'))) diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean index e7b4e7f73..22b9ff9c4 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean @@ -6,18 +6,41 @@ Authors: Chris Anto Fröschl module -import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties -import Cslib.Languages.LambdaCalculus.Named.Untyped.SwapProperties +public import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties +public import Cslib.Languages.LambdaCalculus.Named.Untyped.SwapProperties /-! # Equivalence of α-equivalence definitions -Theorems showing equivalence of multiple α-equivalence. +Theorems showing equivalence of the five definitions of α-equivalence from [Crole2012]: + +* `∼p` (Definition 3.1): permutation with non-occurrence side condition (`AlphaEquiv`) +* `∼p#` (Definition 3.2): permutation with freshness side condition (`AlphaEquivPFresh`) +* `∼¹p` (Definition 3.3): permutation with non-occurrence on bodies only (`AlphaEquivP1`) +* `∼r` (Definition 3.4): traditional renaming axiom with non-occurrence (`AlphaEquivR`) +* `∼r#` (Definition 3.5): renaming axiom with freshness (`AlphaEquivRFresh`) + +The main results are: + +* **Theorem 4.1** [Crole2012]: `∼p = ∼p#` (`alphaEquiv_iff_alphaEquivPFresh`) +* **Theorem 4.2** [Crole2012]: `∼p = ∼¹p` (`alphaEquiv_iff_alphaEquivP1`) +* **Theorem 4.4** [Crole2012]: `∼p = ∼r` (`alphaEquiv_iff_alphaEquivR`) +* **Theorem 4.5** [Crole2012]: `∼p = ∼r#` (`alphaEquiv_iff_alphaEquivRFresh`) +* **Theorem 4.6** [Crole2012]: `∼r = ∼r#` (`alphaEquivR_iff_alphaEquivRFresh`) + +The proofs make essential use of: + +* **Lemma 6.1** [Crole2012]: Swap preserves α-equivalence (`AlphaEquiv.swap_preserve`) +* **Lemma 6.2** [Crole2012]: Agreement on free variables implies α-equivalence + (`swap_comp_alphaEquiv_of_not_mem_fv`) +* **Agreement sets** (`agreementSet`): used in the Lemma 6.2 arguments ## References * [Roy L. Crole, *Alpha equivalence equalities*][Crole2012] -/ +@[expose] public section + namespace Cslib universe u @@ -26,11 +49,16 @@ variable {Var : Type u} [DecidableEq Var] [HasFresh Var] namespace LambdaCalculus.Named.Untyped.Term -/- - Non-occurrence implies freshness. +/-! ## Direction ∼p → ∼p# + +Non-occurrence (`y ∉ vars(m)`) obviously implies freshness (`y ∉ fv(m)`), and the `swap` +operation coincides with `rename` when the target variable does not occur in the term. + +See [Crole2012] proof of Theorem 4.1, first sentence: "It is trivial that ∼p is contained in ∼p#." -/ omit [HasFresh Var] in -lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : AlphaEquiv m n → AlphaEquivPFresh m n := by +lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : + AlphaEquiv m n → AlphaEquivPFresh m n := by intro h induction h with | var => constructor @@ -45,62 +73,75 @@ lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : AlphaEquiv m n → Alpha apply AlphaEquivPFresh.abs h1 h2 | app h1 h2 ih1 ih2 => exact AlphaEquivPFresh.app ih1 ih2 -lemma alphaEquivPFresh_of_alphaEquiv {m n : Term Var} : AlphaEquivPFresh m n → AlphaEquiv m n := by +/-! ## Direction ∼p# → ∼p (the interesting direction of Theorem 4.1) -/ +lemma alphaEquivPFresh_of_alphaEquiv {m n : Term Var} : + AlphaEquivPFresh m n → AlphaEquiv m n := by intro h induction h with | var => constructor - | abs hy h ih => + | abs hy _h ih => rename_i u a b E E' - have h1 : u ∉ E.fv := by aesop - have h2 : u ∉ E'.fv := by aesop - -- TODO do this whole proof via Lemma 6.2 using the agreement set (AS) argumentation - - -- TODO how to formalize the "pick any z ≠ u" - - obtain ⟨m1', hm1', hm1''⟩ := exists_alphaEquiv_not_mem_vars h1 - obtain ⟨m2', hm2', hm2''⟩ := exists_alphaEquiv_not_mem_vars h2 - - have h_swap_preserve : - (E.swap a u).AlphaEquiv (m1'.swap a u) ∧ (E'.swap b u).AlphaEquiv (m2'.swap b u) := by - exact ⟨AlphaEquiv.swap_preserve hm1', AlphaEquiv.swap_preserve hm2'⟩; - - have h_trans : (m1'.rename a u).AlphaEquiv (m2'.rename b u) := by - rw [← swap_eq_rename_of_not_mem_vars hm1''] - rw [← swap_eq_rename_of_not_mem_vars hm2''] - exact AlphaEquiv.trans - ( AlphaEquiv.symm h_swap_preserve.1 ) ( AlphaEquiv.trans ih h_swap_preserve.2 ); - - have h_abs1 : (abs a m1').AlphaEquiv (abs b m2') := by - apply_rules [ AlphaEquiv.abs ]; - grind [AlphaEquiv.trans]; - have h_abs2 : (abs a E).AlphaEquiv (abs a m1') ∧ (abs b m2').AlphaEquiv (abs b E') := by - exact ⟨ - AlphaEquiv.context ( c := Context.abs a Context.hole ) hm1', - AlphaEquiv.context ( c := Context.abs b Context.hole ) hm2'.symm - ⟩; - exact AlphaEquiv.trans h_abs2.1 ( AlphaEquiv.trans h_abs1 h_abs2.2 ); + -- We have: (u a) · E ∼p (u b) · E' (by induction: ih) and u # a, b, E, E' (by hy). + -- Extract freshness conditions from hy. + have hu_a : u ≠ a := by aesop + have hu_b : u ≠ b := by aesop + have hu_E : u ∉ E.fv := by aesop + have hu_E' : u ∉ E'.fv := by aesop + -- Pick z ≠ u with z ∉ vars(E) ∪ vars(E') ∪ {a, b} (stronger than freshness). + obtain ⟨z, hz⟩ : ∃ z : Var, z ∉ E.vars ∪ E'.vars ∪ {a, b, u} := by + exact Infinite.exists_notMem_finset (E.vars ∪ E'.vars ∪ {a, b, u}) + have hz_a : z ≠ a := by aesop + have hz_b : z ≠ b := by aesop + have hz_u : z ≠ u := by aesop + have hz_E : z ∉ E.vars := by aesop + have hz_E' : z ∉ E'.vars := by aesop + have hz_fv_E : z ∉ E.fv := by + have : E.vars = E.fv ∪ E.bv := vars_either_fv_or_bv + aesop + have hz_fv_E' : z ∉ E'.fv := by + have : E'.vars = E'.fv ∪ E'.bv := vars_either_fv_or_bv + aesop + -- Using Lemma 6.1 we get + have h_swap : ((E.swap u a).swap z u) =α ((E'.swap u b).swap z u) := by + rw [@swap_comm (x := u) (y := a), swap_comm (x := u) (y := b)] + exact AlphaEquiv.swap_preserve ih + -- From Lemma 6.2 part 2 via agreement sets + have h_agree_E : ((E.swap u a).swap z u) =α (E.swap z a) := + swap_comp_alphaEquiv_of_not_mem_fv hu_E hz_fv_E + have h_agree_E' : ((E'.swap u b).swap z u) =α (E'.swap z b) := + swap_comp_alphaEquiv_of_not_mem_fv hu_E' hz_fv_E' + -- Chain by symmetry and transitivity of ∼p + -- (z a) · E ∼p (z u)·(u a)·E ∼p (z u)·(u b)·E' ∼p (z b) · E' + have h_chain : (E.swap z a) =α (E'.swap z b) := + AlphaEquiv.trans (AlphaEquiv.symm h_agree_E) (AlphaEquiv.trans h_swap h_agree_E') + -- Convert swap to rename (since z ∉ vars) and apply the pi rule. + -- Since z ∉ vars(E), swap z a = rename a z (by swap_comm + swap_eq_rename). + rw [swap_comm, swap_eq_rename_of_not_mem_vars hz_E] at h_chain + rw [swap_comm, swap_eq_rename_of_not_mem_vars hz_E'] at h_chain + exact AlphaEquiv.abs (by aesop) h_chain | app _ _ ih1 ih2 => exact AlphaEquiv.app ih1 ih2 -/-! See [Crole2012] Theorem 4.1 -/ -theorem alphaEquiv_iff_alphaEquivPFresh (m n : Term Var) : AlphaEquiv m n ↔ AlphaEquivPFresh m n := +/-! ## Theorem 4.1 [Crole2012] -/ +theorem alphaEquiv_iff_alphaEquivPFresh (m n : Term Var) : + AlphaEquiv m n ↔ AlphaEquivPFresh m n := ⟨alphaEquiv_of_alphaEquivPFresh, alphaEquivPFresh_of_alphaEquiv⟩ -/-! See [Crole2012] Theorem 4.2 -/ +/-! ## Theorem 4.2 [Crole2012] -/ theorem alphaEquiv_iff_alphaEquivP1 (m n : Term Var) : AlphaEquiv m n ↔ AlphaEquivP1 m n := by sorry -/-! See [Crole2012] Theorem 4.4 -/ +/-! ## Theorem 4.4 [Crole2012] -/ theorem alphaEquiv_iff_alphaEquivR (m n : Term Var) : AlphaEquiv m n ↔ AlphaEquivR m n := by sorry -/-! See [Crole2012] Theorem 4.5 -/ +/-! ## Theorem 4.5 [Crole2012] -/ theorem alphaEquiv_iff_alphaEquivRFresh (m n : Term Var) : AlphaEquiv m n ↔ AlphaEquivRFresh m n := by sorry -/-! See [Crole2012] Theorem 4.6 -/ +/-! ## Theorem 4.6 [Crole2012] -/ theorem alphaEquivR_iff_alphaEquivRFresh (m n : Term Var) : AlphaEquivR m n ↔ AlphaEquivRFresh m n := by sorry diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/Basic.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/Basic.lean index f0ed25982..1f90634ef 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/Basic.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/Basic.lean @@ -18,7 +18,9 @@ The untyped λ-calculus, with a named representation of variables. * [H. Barendregt, *Introduction to Lambda Calculus*][Barendregt1984] * Definition of α-equivalence [M. Gabbay and A. Pitts, *A New Approach to Abstract Syntax with -Variable Binding*][Gabbay2002] + Variable Binding*][Gabbay2002] +* [Roy L. Crole, *Alpha equivalence equalities*][Crole2012] — the `AlphaEquiv` definition + corresponds to Definition 3.1 (∼p) in this paper -/ @@ -73,7 +75,12 @@ omit [HasFresh Var] in theorem rename_eq_sizeOf {m : Term Var} {x y : Var} : sizeOf (m.rename x y) = sizeOf m := by induction m <;> aesop (add simp [Term.rename]) -/-- α-equivalence. -/ +/-- **Definition 3.1** [Crole2012]: `∼p` — α-equivalence via permutation (swapping) with +non-occurrence side condition. + +This definition is analogous to the definition of α-equivalence for λ-expressions in +[Gabbay2002] (Section 2, page 3). The `abs` rule uses the `rename` operation, which +coincides with `swap` when the witness variable `y` does not occur in the term. -/ inductive AlphaEquiv : Term Var → Term Var → Prop where | var {x} : AlphaEquiv (var x) (var x) | abs {y x1 x2 m1 m2} : y ∉ m1.vars ∪ m2.vars ∪ {x1, x2} → diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/Properties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/Properties.lean index 4ad99a267..1b849f035 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/Properties.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/Properties.lean @@ -8,6 +8,20 @@ module public import Cslib.Languages.LambdaCalculus.Named.Untyped.Basic +/-! # Properties of λ-calculus terms and α-equivalence + +Basic properties of renaming, variable sets, and α-equivalence. + +The reflexivity, symmetry, and transitivity of `AlphaEquiv` (`∼p`, Definition 3.1) +follow from Theorem 4.4 in [Crole2012], which establishes that `∼p` coincides with +`∼r` (Definition 3.4), the latter being defined as an equivalence relation. +Here they are proved directly for `∼p` by structural/well-founded induction. + +## References + +* [Roy L. Crole, *Alpha equivalence equalities*][Crole2012] +-/ + public section namespace Cslib @@ -103,7 +117,10 @@ theorem AlphaEquiv.eq_sizeOf {m n : Term Var} : m =α n → sizeOf m = sizeOf n | @app m1 n1 m2 n2 _ hm hn => grind -/-- α-equivalent terms have the same free variables. -/ +/-- α-equivalent terms have the same free variables. + +Related to [Crole2012], Proposition 2.1 part 2, which shows that `free(E)` is the +support of `[E]α`. -/ theorem AlphaEquiv.same_fv {m n : Term Var} : m =α n → m.fv = n.fv := by intro h induction h with @@ -119,7 +136,10 @@ theorem AlphaEquiv.same_fv {m n : Term Var} : m =α n → m.fv = n.fv := by variable [HasFresh Var] -/-- Reflexivity of α-equivalence. -/ +/-- Reflexivity of α-equivalence. + +This follows from Theorem 4.4 [Crole2012] (which shows `∼p = ∼r`, and `∼r` is +reflexive by definition), but is proved here directly by well-founded induction. -/ theorem AlphaEquiv.refl (m : Term Var) : m =α m := by refine WellFounded.induction (C := fun m => m =α m) sizeOfWFRel.wf m ?_ simp only; intro m ih @@ -135,7 +155,10 @@ theorem AlphaEquiv.refl (m : Term Var) : m =α m := by apply AlphaEquiv.app <;> apply ih <;> grind omit [HasFresh Var] in -/-- Symmetry of α-equivalence. -/ +/-- Symmetry of α-equivalence. + +This follows from Theorem 4.4 [Crole2012] (which shows `∼p = ∼r`, and `∼r` +includes an explicit symmetry rule), but is proved here directly. -/ theorem AlphaEquiv.symm {m n : Term Var} : m =α n → n =α m := by intro h induction h with @@ -189,7 +212,11 @@ theorem AlphaEquiv.abs_elim {m1 m2 : Term Var} {x1 x2 y : Var} : apply AlphaEquiv.rename_preserve <;> grind [AlphaEquiv.rename_preserve, rename_vars] grind [rename_concat, rename_vars] -/-- Transitivity of α-equivalence. -/ +/-- Transitivity of α-equivalence. + +This follows from Theorem 4.4 [Crole2012] (which shows `∼p = ∼r`, and `∼r` +includes an explicit transitivity rule), but is proved here directly +by well-founded induction. -/ theorem AlphaEquiv.trans {m n p : Term Var} : m =α n → n =α p → m =α p := by refine (WellFounded.induction sizeOfWFRel.wf m diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean index fabfa9121..87f67252c 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean @@ -14,9 +14,17 @@ public import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties Helper lemmas for reasoning about `Term.swap` and its interaction with `AlphaEquiv`, `rename`, `vars`, and `fv`. +The notion of *atom swapping* (transposition) as the basis for defining α-equivalence +originates from [Gabbay and Pitts, *A New Approach to Abstract Syntax with Variable +Binding*][Gabbay2002] (Section 2, page 3). The key observation is that α-equivalence can +be defined using the notion of atom swapping in lieu of the traditional +renaming/substitution approach. + ## References -* [Roy L. Crole, *Alpha equivalence equalities*][Crole2012], Section 6 +* [Roy L. Crole, *Alpha equivalence equalities*][Crole2012], Sections 2 and 6 +* [M. Gabbay and A. Pitts, *A New Approach to Abstract Syntax with Variable + Binding*][Gabbay2002], Section 2 -/ @[expose] public section @@ -29,7 +37,16 @@ variable {Var : Type u} [DecidableEq Var] namespace LambdaCalculus.Named.Untyped.Term -/-! ### Basic properties of swap -/ +/-! ### Basic properties of swap + +The swap (transposition) operation `m.swap x y` implements the permutation action +`(x y) · E` from [Crole2012] (Section 2). It simultaneously replaces all occurrences +of `x` with `y` and vice versa throughout a term. + +The idea of using atom swapping as a primitive operation for reasoning about variable +binding was introduced in [Gabbay2002] (Section 2, page 3), and is central to the nominal +approach to abstract syntax. +-/ @[simp] lemma swap_self {m : Term Var} {x : Var} : m.swap x x = m := by @@ -39,20 +56,26 @@ lemma swap_comm {m : Term Var} {x y : Var} : m.swap x y = m.swap y x := by induction m <;> simp [swap] <;> grind @[simp] -lemma swap_involutive {m : Term Var} {x y : Var} : (m.swap x y).swap x y = m := by +lemma swap_involutive {m : Term Var} {x y : Var} : + (m.swap x y).swap x y = m := by induction m <;> simp [swap] <;> grind @[simp] -lemma swap_preserves_sizeOf {m : Term Var} {x y : Var} : sizeOf (m.swap x y) = sizeOf m := by +lemma swap_preserves_sizeOf {m : Term Var} {x y : Var} : + sizeOf (m.swap x y) = sizeOf m := by induction m <;> simp [swap] <;> grind @[simp] -lemma swap_unused {m : Term Var} {x y : Var} : x ∉ m.vars → y ∉ m.vars → m.swap x y = m := by +lemma swap_unused {m : Term Var} {x y : Var} : + x ∉ m.vars → y ∉ m.vars → m.swap x y = m := by induction m <;> grind [swap, vars] -/-- When `y ∉ m.vars`, `swap x y` and `rename x y` coincide. -/ -lemma swap_eq_rename_of_not_mem_vars {m : Term Var} {x y : Var} (hy : y ∉ m.vars) - : m.swap x y = m.rename x y := by +/-- When `y ∉ m.vars`, `swap x y` and `rename x y` coincide. + +This is because `rename x y` only changes `x` to `y` (not `y` to `x`), and when `y` does +not occur in `m`, swapping and renaming produce the same result. -/ +lemma swap_eq_rename_of_not_mem_vars {m : Term Var} {x y : Var} + (hy : y ∉ m.vars) : m.swap x y = m.rename x y := by induction m with | var z => unfold swap rename @@ -63,30 +86,33 @@ lemma swap_eq_rename_of_not_mem_vars {m : Term Var} {x y : Var} (hy : y ∉ m.va | app n1 n2 ih1 ih2 => simp_all +decide [Term.swap, Term.rename, Term.vars] -/-- The set of free variables after a swap. -/ +/-- The set of free variables after a swap. Corresponds to the fact that +`free(π · E) = π · free(E)` noted in the proof of Lemma 6.2 in [Crole2012]. -/ lemma swap_fv {m : Term Var} {x y : Var} : - (m.swap x y).fv = m.fv.image (fun z => if z = x then y else if z = y then x else z) := by - induction m with - | var z => - unfold fv - aesop - | abs z m ih => - simp_all +decide only [Term.swap, Term.fv] - simp [Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff] - grind - | app m n ih1 ih2 => - simp_all +decide only [Term.swap, Term.fv] - rw [Finset.image_union] + (m.swap x y).fv = m.fv.image fun z => if z = x then y else if z = y then x else z := by + induction m with + | var z => + unfold fv + aesop + | abs z m ih => + simp_all +decide only [Term.swap, Term.fv] + simp [Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff] + grind + | app m n ih1 ih2 => + simp_all +decide only [Term.swap, Term.fv] + rw [Finset.image_union] -/-- Swapping preserves non-membership in fv. -/ -lemma fresh_swap {m : Term Var} {x y z : Var} (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.fv) - : z ∉ (m.swap x y).fv := by +/-- Swapping preserves non-membership in `fv`. -/ +lemma fresh_swap {m : Term Var} {x y z : Var} + (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.fv) : + z ∉ (m.swap x y).fv := by rw [swap_fv] grind /-- The set of vars after a swap. -/ -lemma swap_vars {m : Term Var} {x y z : Var} (hzm : z ∉ m.vars) - : (m.swap x y).vars = m.vars.image (fun z => if z = x then y else if z = y then x else z) := by +lemma swap_vars {m : Term Var} {x y z : Var} (hzm : z ∉ m.vars) : + (m.swap x y).vars = + m.vars.image fun z => if z = x then y else if z = y then x else z := by induction m with | var w => simp +decide [Term.swap, Term.vars] @@ -96,32 +122,42 @@ lemma swap_vars {m : Term Var} {x y z : Var} (hzm : z ∉ m.vars) rw [Finset.image_union] grind -/-- Swapping preserves non-membership in vars. -/ -lemma not_mem_vars_swap {m : Term Var} {x y z : Var} (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.vars) - : z ∉ (m.swap x y).vars := by +/-- Swapping preserves non-membership in `vars`. -/ +lemma not_mem_vars_swap {m : Term Var} {x y z : Var} + (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.vars) : + z ∉ (m.swap x y).vars := by rw [swap_vars hzm] grind /-! ### Swap-rename commutation -/ -/-- Helper function: the action of swap on a single variable. -/ +/-- Helper function: the action of the transposition `(u v)` on a single variable. +Corresponds to the permutation `(u v)` applied to an atom, as used throughout +[Crole2012]. -/ @[simp] -def swapVar (u v z : Var) : Var := if z = u then v else if z = v then u else z +def swapVar (u v z : Var) : Var := + if z = u then v else if z = v then u else z -/-- swapVar is a fixed point for variables outside {u, v}. -/ +/-- `swapVar` is a fixed point for variables outside `{u, v}`. -/ @[simp] -lemma swapVar_fixed {u v z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : swapVar u v z = z := by simp_all +lemma swapVar_fixed {u v z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : + swapVar u v z = z := by simp_all -/- `swapVar` is injective. -/ +/-- `swapVar` is injective (permutations are bijections). -/ lemma swapVar_injective (u v : Var) : Function.Injective (swapVar u v) := by unfold Function.Injective intro a b unfold swapVar aesop -/-- `swap` and `rename` commute. -/ +/-- `swap` and `rename` commute (modulo the permutation action on the variable +arguments). + +This is used in the proof of Lemma 6.1 [Crole2012] to handle the case analysis on +variable equalities in the `abs` case. -/ lemma swap_rename_comm {m : Term Var} {u v x y : Var} : - (m.swap u v).rename (swapVar u v x) (swapVar u v y) = (m.rename x y).swap u v := by + (m.swap u v).rename (swapVar u v x) (swapVar u v y) = + (m.rename x y).swap u v := by induction m with | var z => simp_all +decide [Term.swap, Term.rename, swapVar] @@ -132,76 +168,69 @@ lemma swap_rename_comm {m : Term Var} {u v x y : Var} : | app m n ih1 ih2 => simp_all +decide [Term.swap, Term.rename, swapVar] -lemma swap_rename_comm' {m : Term Var} {u v x z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : - (m.swap u v).rename (swapVar u v x) z = (m.rename x z).swap u v := by +lemma swap_rename_comm' {m : Term Var} {u v x z : Var} + (hzu : z ≠ u) (hzv : z ≠ v) : + (m.swap u v).rename (swapVar u v x) z = + (m.rename x z).swap u v := by rw [← @swap_rename_comm _ _ m u v x z] simp_all -variable [HasFresh Var] +def agreementSet (f g : Var → Var) : Set Var := { x | f x = g x } -/-! ### Lemma 6.1: Swap preserves α-equivalence -/ +def disagreementSet (f g : Var → Var) : Set Var := { x | f x ≠ g x } --- TODO cleanup below proofs +/-- The composition `(z u) ∘ (u a)` agrees with `(z a)` on all variables outside +`{u, z}`. -/- Lemma 6.1 from [Crole2012]. -/ -lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : - m =α m' → (m.swap u v) =α (m'.swap u v) := by - by_contra h; - -- Let's choose any $m$ and $m'$ such that $m =α m'$ but $(m.swap u v) ≠α (m'.swap u v)$. - obtain ⟨m, m', h_eq, h_neq⟩ : ∃ m m' : Term Var, m =α m' ∧ ¬(m.swap u v) =α (m'.swap u v) := by - grind; - obtain ⟨m, m', h_eq, h_neq, h_min⟩ : ∃ m m' : Term Var, m =α m' ∧ ¬(m.swap u v) =α (m'.swap u v) ∧ ∀ n n' : Term Var, n =α n' → sizeOf n < sizeOf m → (n.swap u v) =α (n'.swap u v) := by - have h_wf : WellFounded (fun m n : ℕ => m < n) := by - exact wellFounded_lt; - have := h_wf.has_min { n : ℕ | ∃ m m' : Term Var, m =α m' ∧ ¬ ( m.swap u v ) =α ( m'.swap u v ) ∧ n = sizeOf m } ⟨ _, ⟨ m, m', h_eq, h_neq, rfl ⟩ ⟩; - obtain ⟨ a, ⟨ m, m', h_eq, h_neq, rfl ⟩, ha ⟩ := this; exact ⟨ m, m', h_eq, h_neq, fun n n' h_eq' h_lt => Classical.not_not.1 fun h_neq' => ha _ ⟨ n, n', h_eq', h_neq', rfl ⟩ h_lt ⟩ ; - obtain ⟨x1, x2, m1, m2, h_eq⟩ : ∃ x1 x2 : Var, ∃ m1 m2 : Term Var, m = Term.abs x1 m1 ∧ m' = Term.abs x2 m2 ∧ ∃ y : Var, y ∉ m1.vars ∪ m2.vars ∪ {x1, x2} ∧ (m1.rename x1 y) =α (m2.rename x2 y) := by - all_goals rcases h_eq with ⟨ ⟩; - · exact False.elim <| h_neq <| AlphaEquiv.refl _; - · grind; - · exact False.elim <| h_neq <| AlphaEquiv.app ( h_min _ _ ‹_› <| by simp +arith +decide ) ( h_min _ _ ‹_› <| by simp +arith +decide ); - obtain ⟨y, hy₁, hy₂⟩ := h_eq.2.2; - -- Pick z fresh for m1.vars ∪ m2.vars ∪ {x1, x2, u, v}. - obtain ⟨z, hz⟩ : ∃ z : Var, z ∉ m1.vars ∪ m2.vars ∪ {x1, x2, u, v} := by - exact?; - -- By AlphaEquiv.abs_elim with z: m1.rename x1 z =α m2.rename x2 z. - have hz_eq : (m1.rename x1 z) =α (m2.rename x2 z) := by - apply AlphaEquiv.abs_elim; all_goals grind; - -- By swap_rename_comm' (z ≠ u, z ≠ v): (m1.swap u v).rename (sv x1) z =α (m2.swap u v).rename (sv x2) z. - have hz_swap : ((m1.swap u v).rename (swapVar u v x1) z) =α ((m2.swap u v).rename (swapVar u v x2) z) := by - have hz_swap : ((m1.swap u v).rename (swapVar u v x1) z) = ((m1.rename x1 z).swap u v) ∧ ((m2.swap u v).rename (swapVar u v x2) z) = ((m2.rename x2 z).swap u v) := by - apply And.intro; - · apply swap_rename_comm'; all_goals grind; - · apply swap_rename_comm'; all_goals grind; - grind +suggestions; - -- Apply AlphaEquiv.abs with witness z. - have hz_abs : (Term.abs (swapVar u v x1) (m1.swap u v)) =α (Term.abs (swapVar u v x2) (m2.swap u v)) := by - apply AlphaEquiv.abs; - any_goals assumption; - simp_all +decide [ Finset.mem_union, Finset.mem_singleton ]; - grind +suggestions; - exact h_neq ( by simpa [ h_eq ] using hz_abs ) - -/-! ### Lemma 6.2: Agreement on free variables implies α-equivalence -/ +This is the key agreement set computation used in the proof of Theorem 4.1 in +[Crole2012]: when `u, z ∉ free(E)`, we have +`free(E) ⊆ A − {u, z} = AS((z u) ∘ (u a), (z a))`. -/ +lemma agreementSet_swap_comp {a u z : Var} (huz : u ≠ z) : + {x : Var | x ≠ u ∧ x ≠ z} ⊆ + agreementSet (swapVar z u ∘ swapVar u a) (swapVar z a) := by + intro x ⟨hxu, hxz⟩ + simp [agreementSet, Function.comp, swapVar] + aesop -/- -Helper: the composition (z u) ∘ (u a) agrees with (z a) on variables - outside {u, z}. +/-! ### Lemma 6.2: Agreement on free/occurring variables implies equivalence + +**Lemma 6.2** [Crole2012]: + +1. For any expression `E` and permutations `π`, `π'`: + `occ(E) ⊆ AS(π, π')` implies `π · E = π' · E` (syntactic equality). + +2. For any expression `E` and permutations `π`, `π'`: + `free(E) ⊆ AS(π, π')` implies `π · E ∼p π' · E` (α-equivalence). + +Part 1 says that permutations agreeing on all occurring variables produce syntactically +identical results. Part 2 weakens this to free variables, at the cost of getting only +α-equivalence instead of syntactic equality. + +These lemmas are the workhorses behind the proofs of equivalence of α-equivalence +definitions in [Crole2012] (Section 4), particularly Theorems 4.1 and 4.2. -/ -omit [HasFresh Var] in + +/-- Helper: the composition `(z u) ∘ (u a)` agrees with `(z a)` on variables +outside `{u, z}`. + +This is used in the agreement set arguments of Theorem 4.1 [Crole2012]: +`free(E) ⊆ A − {u, z} = AS((z u) ∘ (u a), (z a))`. -/ lemma swap_comp_eq_swap_of_not_eq {x a u z : Var} (hxu : x ≠ u) (hxz : x ≠ z) : swapVar z u (swapVar u a x) = swapVar z a x := by unfold swapVar; aesop; -/- -Lemma 6.2 part 1 from [Crole2012]: If two permutations agree on all occurring - variables, their actions are syntactically equal. +/-- **Lemma 6.2 part 1** [Crole2012] (specialized): If two composed transpositions +agree on all occurring variables, their actions are syntactically equal. - Specialized: if `u, z ∉ vars(m)`, then `(m.swap u a).swap z u = m.swap z a`. - TODO do unspecialized format --/ -omit [HasFresh Var] in +Specialized form: if `u, z ∉ vars(m)`, then `(m.swap u a).swap z u = m.swap z a`. + +This follows from the general statement of Lemma 6.2 part 1: since +`u, z ∉ occ(E)`, we have `occ(E) ⊆ AS((z u) ∘ (u a), (z a))`, and therefore +`(z u) · (u a) · E = (z a) · E`. + +The general statement is: for any expression `E` and permutations `π`, `π'`, +`occ(E) ⊆ AS(π, π')` implies `π · E = π' · E`. -/ lemma swap_comp_eq_of_not_mem_vars {m : Term Var} {a u z : Var} (hu : u ∉ m.vars) (hz : z ∉ m.vars) : (m.swap u a).swap z u = m.swap z a := by @@ -212,18 +241,178 @@ lemma swap_comp_eq_of_not_mem_vars {m : Term Var} {a u z : Var} split_ifs <;> simp_all +decide [ eq_comm ]; · simp_all +decide [ Term.swap, Term.vars ] -/- -Lemma 6.6 from [Crole2012] (Barendregt variable convention): - For any term `m` and variable `y` with `y ∉ fv(m)`, - there exists `m'` alpha-equivalent to `m` with `y ∉ vars(m')`. +variable [HasFresh Var] + +/-! ### Lemma 6.1: Swap preserves α-equivalence + +**Lemma 6.1** [Crole2012]: For any atoms `u` and `v` and expressions `E` and `E'`, +`E ∼p E'` implies `(u v) · E ∼p (u v) · E'`. + +The proof uses well-founded induction on the size of expressions, with a case analysis +on the possible equalities between atoms in the `abs` case. The key difficulty is that +for the abstraction case `B([a]E) ∼p B([b]E')`, one must handle 17 non-trivial +combinations of equalities between `a`, `b`, the witness `z`, and the swap atoms `u`, +`v`. + +This approach via case analysis on atom equalities follows [Crole2012] (Section 6.1, +Lemma 6.1). -/ + +/-- **Lemma 6.1** [Crole2012]: Swap (transposition) preserves α-equivalence. + +This is the key equivariance property of the swapping action: α-equivalence is +preserved under atom transpositions. +-/ +lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : + m =α m' → (m.swap u v) =α (m'.swap u v) := by + by_contra h + obtain ⟨m, m', h_eq, h_neq⟩ : + ∃ m m' : Term Var, m =α m' ∧ ¬(m.swap u v) =α (m'.swap u v) := by grind + obtain ⟨m, m', h_eq, h_neq, h_min⟩ : + ∃ m m' : Term Var, m =α m' ∧ + ¬(m.swap u v) =α (m'.swap u v) ∧ + ∀ n n' : Term Var, n =α n' → sizeOf n < sizeOf m → + (n.swap u v) =α (n'.swap u v) := by + have h_wf : WellFounded (fun m n : ℕ => m < n) := by + exact wellFounded_lt; + have := h_wf.has_min + { n : ℕ | ∃ m m' : Term Var, m =α m' ∧ + ¬ ( m.swap u v ) =α ( m'.swap u v ) ∧ + n = sizeOf m } + ⟨ _, ⟨ m, m', h_eq, h_neq, rfl ⟩ ⟩; + obtain ⟨ a, ⟨ m, m', h_eq, h_neq, rfl ⟩, ha ⟩ := this; + exact ⟨ m, m', h_eq, h_neq, fun n n' h_eq' h_lt => + Classical.not_not.1 fun h_neq' => + ha _ ⟨ n, n', h_eq', h_neq', rfl ⟩ h_lt ⟩ ; + obtain ⟨x1, x2, m1, m2, h_eq⟩ : + ∃ x1 x2 : Var, ∃ m1 m2 : Term Var, + m = Term.abs x1 m1 ∧ + m' = Term.abs x2 m2 ∧ ∃ y : Var, + y ∉ m1.vars ∪ m2.vars ∪ {x1, x2} ∧ + (m1.rename x1 y) =α (m2.rename x2 y) := by + all_goals rcases h_eq with ⟨ ⟩; + · exact False.elim <| h_neq <| AlphaEquiv.refl _; + · grind; + · exact False.elim <| h_neq <| AlphaEquiv.app + ( h_min _ _ ‹_› <| by simp +arith +decide ) + ( h_min _ _ ‹_› <| by simp +arith +decide ); + obtain ⟨y, hy₁, hy₂⟩ := h_eq.2.2; + -- Pick z fresh for m1.vars ∪ m2.vars ∪ {x1, x2, u, v}. + obtain ⟨z, hz⟩ : + ∃ z : Var, z ∉ m1.vars ∪ m2.vars ∪ {x1, x2, u, v} := by + exact Infinite.exists_notMem_finset (m1.vars ∪ m2.vars ∪ {x1, x2, u, v}) + have hz_eq : (m1.rename x1 z) =α (m2.rename x2 z) := by + apply AlphaEquiv.abs_elim; all_goals grind; + have hz_swap : + ((m1.swap u v).rename (swapVar u v x1) z) =α + ((m2.swap u v).rename (swapVar u v x2) z) := by + have hz_swap : + ((m1.swap u v).rename (swapVar u v x1) z) = + ((m1.rename x1 z).swap u v) ∧ + ((m2.swap u v).rename (swapVar u v x2) z) = + ((m2.rename x2 z).swap u v) := by + exact ⟨swap_rename_comm' (by grind) (by grind), + swap_rename_comm' (by grind) (by grind)⟩ + grind +suggestions; + have hz_abs : + (Term.abs (swapVar u v x1) (m1.swap u v)) =α + (Term.abs (swapVar u v x2) (m2.swap u v)) := by + apply AlphaEquiv.abs; + any_goals assumption; + simp_all +decide [ Finset.mem_union ]; + grind +suggestions; + exact h_neq ( by simpa [ h_eq ] using hz_abs ) + +/-! ### Lemma 6.2 part 2 (α-equivalence version) -/ + +/-- Helper: if `y₁ ∉ fv(m)` and `y₂ ∉ fv(m)`, there exists `m'` α-equivalent to `m` +with both `y₁ ∉ vars(m')` and `y₂ ∉ vars(m')`. -/ +lemma exists_alphaEquiv_not_mem_vars_pair {m : Term Var} {y₁ y₂ : Var} + (h₁ : y₁ ∉ m.fv) (h₂ : y₂ ∉ m.fv) : + ∃ m', m =α m' ∧ y₁ ∉ m'.vars ∧ y₂ ∉ m'.vars := by + -- Step 1: Rename y₁ to a fresh variable, avoiding both y₁ and y₂. + let f₁ := HasFresh.fresh (m.vars ∪ {y₁, y₂}) + have hf₁ : f₁ ∉ m.vars ∪ {y₁, y₂} := HasFresh.fresh_notMem _ + let m₁ := m.rename y₁ f₁ + have hf₁_ne_y₁ : f₁ ≠ y₁ := by intro h; exact hf₁ (by simp [h]) + have hf₁_ne_y₂ : f₁ ≠ y₂ := by intro h; exact hf₁ (by simp [h]) + have hf₁_vars : f₁ ∉ m.vars := by intro h; exact hf₁ (Finset.mem_union_left _ h) + have hm₁_alpha : m =α m₁ := AlphaEquiv.rename_non_fv h₁ hf₁_vars + have hy₁_m₁ : y₁ ∉ m₁.vars := rename_remove hf₁_ne_y₁.symm + -- y₂ ∉ fv(m₁) since fv is preserved by α-equivalence. + have hy₂_fv_m₁ : y₂ ∉ m₁.fv := + AlphaEquiv.same_fv hm₁_alpha ▸ h₂ + -- Step 2: Rename y₂ to a fresh variable, avoiding both y₁ and y₂. + let f₂ := HasFresh.fresh (m₁.vars ∪ {y₁, y₂}) + have hf₂ : f₂ ∉ m₁.vars ∪ {y₁, y₂} := HasFresh.fresh_notMem _ + let m₂ := m₁.rename y₂ f₂ + have hf₂_ne_y₁ : f₂ ≠ y₁ := by intro h; exact hf₂ (by simp [h]) + have hf₂_ne_y₂ : f₂ ≠ y₂ := by intro h; exact hf₂ (by simp [h]) + have hf₂_vars : f₂ ∉ m₁.vars := by intro h; exact hf₂ (Finset.mem_union_left _ h) + have hm₂_alpha : m₁ =α m₂ := AlphaEquiv.rename_non_fv hy₂_fv_m₁ hf₂_vars + have hy₂_m₂ : y₂ ∉ m₂.vars := rename_remove hf₂_ne_y₂.symm + -- y₁ ∉ vars(m₂): by rename_vars, vars(m₂) ⊆ (vars(m₁) \ {y₂}) ∪ {f₂}. + -- Since y₁ ∉ vars(m₁) and f₂ ≠ y₁, we conclude y₁ ∉ vars(m₂). + have hy₁_m₂ : y₁ ∉ m₂.vars := by + simp only [m₂, rename_vars, Finset.mem_union, Finset.mem_sdiff, + Finset.mem_singleton] + intro h + cases h with + | inl h => exact hy₁_m₁ h.1 + | inr h => split_ifs at h <;> simp_all [Ne.symm hf₂_ne_y₁] + exact ⟨m₂, AlphaEquiv.trans hm₁_alpha hm₂_alpha, hy₁_m₂, hy₂_m₂⟩ + +/-- **Lemma 6.2 part 2** [Crole2012] (specialized): If two composed transpositions +agree on all free variables, their actions are α-equivalent. + +Specialized form: if `u, z ∉ fv(m)`, then `(m.swap u a).swap z u =α m.swap z a`. + +This follows from the general statement of Lemma 6.2 part 2: since `u, z # E` (i.e., +`u, z ∉ free(E)`), we have `free(E) ⊆ AS((z u) ∘ (u a), (z a))`, and therefore +`(z u) · (u a) · E ∼p (z a) · E`. + +The agreement set computation is: for any `x ∈ free(E)`, since `x ≠ u` and `x ≠ z`, +we have `swapVar z u (swapVar u a x) = swapVar z a x` +(by `swap_comp_eq_swap_of_not_eq`). + +The proof reduces to Lemma 6.2 part 1 via `exists_alphaEquiv_not_mem_vars_pair` +and `AlphaEquiv.swap_preserve`. -/ +lemma swap_comp_alphaEquiv_of_not_mem_fv {m : Term Var} {a u z : Var} + (hu : u ∉ m.fv) (hz : z ∉ m.fv) : + ((m.swap u a).swap z u) =α (m.swap z a) := by + -- By exists_alphaEquiv_not_mem_vars_pair, get m' with m =α m' and + -- u, z ∉ vars(m'). + obtain ⟨m', hm', hm'u, hm'z⟩ := exists_alphaEquiv_not_mem_vars_pair hu hz + -- By Lemma 6.2 part 1 (swap_comp_eq_of_not_mem_vars): + -- (m'.swap u a).swap z u = m'.swap z a (syntactic equality!) + have h_eq : (m'.swap u a).swap z u = m'.swap z a := + swap_comp_eq_of_not_mem_vars hm'u hm'z + -- By Lemma 6.1 (swap_preserve) applied twice to m =α m': + have h1 : ((m.swap u a).swap z u) =α ((m'.swap u a).swap z u) := + AlphaEquiv.swap_preserve (AlphaEquiv.swap_preserve hm') + -- Rewrite using the syntactic equality: + rw [h_eq] at h1 + -- By Lemma 6.1 (swap_preserve) applied to the symmetric direction: + have h2 : (m'.swap z a) =α (m.swap z a) := + AlphaEquiv.swap_preserve (AlphaEquiv.symm hm') + -- Chain: (m.swap u a).swap z u =α (m'.swap u a).swap z u + -- = m'.swap z a =α m.swap z a + exact AlphaEquiv.trans h1 h2 + +/-- **Lemma 6.6** [Crole2012] (Barendregt variable convention): +For any term `m` and variable `y` with `y ∉ fv(m)`, +there exists `m'` α-equivalent to `m` with `y ∉ vars(m')`. + +Informally, we can always rename bound atoms so that a particular atom does not +occur. -/ lemma exists_alphaEquiv_not_mem_vars {m : Term Var} {y : Var} (hy : y ∉ m.fv) : ∃ m', m =α m' ∧ y ∉ m'.vars := by by_contra h; convert Classical.byContradiction fun h' => ?_; convert h'; convert Classical.not_not; - simp_all only [not_exists, not_and, Decidable.not_not, not_false_eq_true, not_true_eq_false] + simp_all only [not_exists, not_and, Decidable.not_not, + not_false_eq_true, not_true_eq_false] convert h ( m.rename y ( HasFresh.fresh ( m.vars ∪ { y } ) ) ) ( by grind +suggestions ) using 1 simp +decide [rename_vars] From 1a33860a5f232c336cd727841549b0e75c4c1398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Mon, 20 Jul 2026 08:20:18 +0000 Subject: [PATCH 05/12] refactors AlphaEquiv.swap_preserve to align more with 27 cases paper proof --- .../Named/Untyped/AlphaEquivDefs.lean | 25 +- .../Named/Untyped/AlphaEquivEquiv.lean | 11 +- .../Named/Untyped/SwapProperties.lean | 533 +++++++++++------- 3 files changed, 352 insertions(+), 217 deletions(-) diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean index ca150ef0a..be4218dac 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean @@ -29,8 +29,7 @@ The last two definitions use the traditional capture-avoiding substitution (rena ## References * [Roy L. Crole, *Alpha equivalence equalities*][Crole2012] -* [M. Gabbay and A. Pitts, *A New Approach to Abstract Syntax with Variable - Binding*][Gabbay2002] +* [M. Gabbay and A. Pitts, *A New Approach to Abstract Syntax with Variable Binding*][Gabbay2002] ## Notation @@ -66,12 +65,12 @@ def swap (m : Term Var) (x y : Var) : Term Var := | abs z m' => abs (if z = x then y else if z = y then x else z) (m'.swap x y) | app n1 n2 => app (n1.swap x y) (n2.swap x y) -/-- **Definition 3.2** [Crole2012]: `∼p#` — α-equivalence via permutation with freshness +/-- **Definition 3.2** [Crole2012]: `∼p#` - α-equivalence via permutation with freshness side condition. -The rule `pi#` uses the freshness condition `z # a, b, E, E'` (i.e., `z ∉ fv(E) ∪ fv(E') ∪ -{a, b}`) instead of the non-occurrence condition `z ∉ vars(E) ∪ vars(E') ∪ {a, b}` used in -Definition 3.1 (`AlphaEquiv`). +The rule `pi#` uses the freshness condition `z # a, b, E, E'` +(i.e., `z ∉ fv(E) ∪ fv(E') ∪ {a, b}`) instead of the non-occurrence condition +`z ∉ vars(E) ∪ vars(E') ∪ {a, b}` used in Definition 3.1 (`AlphaEquiv`). -/ inductive AlphaEquivPFresh : Term Var → Term Var → Prop where | var {x : Var} : AlphaEquivPFresh (var x) (var x) @@ -83,7 +82,7 @@ inductive AlphaEquivPFresh : Term Var → Term Var → Prop where AlphaEquivPFresh m1 n1 → AlphaEquivPFresh m2 n2 → AlphaEquivPFresh (app m1 m2) (app n1 n2) -/-- **Definition 3.3** [Crole2012]: `∼¹p` — α-equivalence via permutation with non-occurrence +/-- **Definition 3.3** [Crole2012]: `∼¹p` - α-equivalence via permutation with non-occurrence restricted to the bodies only. This definition is analogous to the definition of α-equivalence for λ-expressions in @@ -100,19 +99,17 @@ inductive AlphaEquivP1 : Term Var → Term Var → Prop where AlphaEquivP1 m1 n1 → AlphaEquivP1 m2 n2 → AlphaEquivP1 (app m1 m2) (app n1 n2) -/-- **Definition 3.4** [Crole2012]: `∼r` — α-equivalence via the traditional renaming axiom +/-- **Definition 3.4** [Crole2012]: `∼r` - α-equivalence via the traditional renaming axiom with non-occurrence side condition. This definition is analogous to the definition of α-equivalence for λ-expressions most commonly -found in the literature, and certainly in most standard textbooks. One of the first formal -presentations is in [Church1941] and the same, though rather less formal approach is taken by -[Barendregt1985] (Definition 2.1.11, page 26). +found in the literature. One of the first formal presentations is in [Church1941] and the same, +though rather less formal approach is taken by [Barendregt1985] (Definition 2.1.11). -/ inductive AlphaEquivR : Term Var → Term Var → Prop where | refl {m : Term Var} : AlphaEquivR m m | symm {m1 m2 : Term Var} : AlphaEquivR m1 m2 → AlphaEquivR m2 m1 - | trans {m1 m2 m3 : Term Var} : - AlphaEquivR m1 m2 → AlphaEquivR m2 m3 → AlphaEquivR m1 m3 + | trans {m1 m2 m3 : Term Var} : AlphaEquivR m1 m2 → AlphaEquivR m2 m3 → AlphaEquivR m1 m3 | app {m1 n1 m2 n2 : Term Var} : AlphaEquivR m1 n1 → AlphaEquivR m2 n2 → AlphaEquivR (app m1 m2) (app n1 n2) @@ -123,7 +120,7 @@ inductive AlphaEquivR : Term Var → Term Var → Prop where x' ∉ ({x} : Finset Var) ∪ m.vars → AlphaEquivR (abs x m) (abs x' (m.subst x (var x'))) -/-- **Definition 3.5** [Crole2012]: `∼r#` — α-equivalence via the renaming axiom with +/-- **Definition 3.5** [Crole2012]: `∼r#` - α-equivalence via the renaming axiom with freshness side condition. Same as `∼r` (Definition 3.4), but the renaming axiom uses a freshness side condition diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean index 22b9ff9c4..144ee71cb 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean @@ -27,13 +27,6 @@ The main results are: * **Theorem 4.5** [Crole2012]: `∼p = ∼r#` (`alphaEquiv_iff_alphaEquivRFresh`) * **Theorem 4.6** [Crole2012]: `∼r = ∼r#` (`alphaEquivR_iff_alphaEquivRFresh`) -The proofs make essential use of: - -* **Lemma 6.1** [Crole2012]: Swap preserves α-equivalence (`AlphaEquiv.swap_preserve`) -* **Lemma 6.2** [Crole2012]: Agreement on free variables implies α-equivalence - (`swap_comp_alphaEquiv_of_not_mem_fv`) -* **Agreement sets** (`agreementSet`): used in the Lemma 6.2 arguments - ## References * [Roy L. Crole, *Alpha equivalence equalities*][Crole2012] @@ -58,7 +51,7 @@ See [Crole2012] proof of Theorem 4.1, first sentence: "It is trivial that ∼p i -/ omit [HasFresh Var] in lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : - AlphaEquiv m n → AlphaEquivPFresh m n := by + AlphaEquiv m n → AlphaEquivPFresh m n := by intro h induction h with | var => constructor @@ -126,6 +119,7 @@ theorem alphaEquiv_iff_alphaEquivPFresh (m n : Term Var) : AlphaEquiv m n ↔ AlphaEquivPFresh m n := ⟨alphaEquiv_of_alphaEquivPFresh, alphaEquivPFresh_of_alphaEquiv⟩ +/- /-! ## Theorem 4.2 [Crole2012] -/ theorem alphaEquiv_iff_alphaEquivP1 (m n : Term Var) : AlphaEquiv m n ↔ AlphaEquivP1 m n := by @@ -145,6 +139,7 @@ theorem alphaEquiv_iff_alphaEquivRFresh (m n : Term Var) : theorem alphaEquivR_iff_alphaEquivRFresh (m n : Term Var) : AlphaEquivR m n ↔ AlphaEquivRFresh m n := by sorry +-/ end LambdaCalculus.Named.Untyped.Term diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean index 87f67252c..5ff4f46b4 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean @@ -20,6 +20,10 @@ Binding*][Gabbay2002] (Section 2, page 3). The key observation is that α-equiva be defined using the notion of atom swapping in lieu of the traditional renaming/substitution approach. +The swap (transposition) operation `m.swap x y` implements the permutation action +`(x y) · E` from [Crole2012] (Section 2). It simultaneously replaces all occurrences +of `x` with `y` and vice versa throughout a term. + ## References * [Roy L. Crole, *Alpha equivalence equalities*][Crole2012], Sections 2 and 6 @@ -37,16 +41,9 @@ variable {Var : Type u} [DecidableEq Var] namespace LambdaCalculus.Named.Untyped.Term -/-! ### Basic properties of swap - -The swap (transposition) operation `m.swap x y` implements the permutation action -`(x y) · E` from [Crole2012] (Section 2). It simultaneously replaces all occurrences -of `x` with `y` and vice versa throughout a term. - -The idea of using atom swapping as a primitive operation for reasoning about variable -binding was introduced in [Gabbay2002] (Section 2, page 3), and is central to the nominal -approach to abstract syntax. --/ +-- TODO explicit usage? +def agreementSet (f g : Var → Var) : Set Var := { x | f x = g x } +def disagreementSet (f g : Var → Var) : Set Var := { x | f x ≠ g x } @[simp] lemma swap_self {m : Term Var} {x : Var} : m.swap x x = m := by @@ -81,46 +78,38 @@ lemma swap_eq_rename_of_not_mem_vars {m : Term Var} {x y : Var} unfold swap rename grind [Term.vars] | abs z m ih => - simp_all +decide [Term.swap, Term.rename, Term.vars]; + simp_all +decide [Term.swap, Term.rename, Term.vars] grind | app n1 n2 ih1 ih2 => simp_all +decide [Term.swap, Term.rename, Term.vars] -/-- The set of free variables after a swap. Corresponds to the fact that -`free(π · E) = π · free(E)` noted in the proof of Lemma 6.2 in [Crole2012]. -/ +/-- The set of free variables after a swap. -/ lemma swap_fv {m : Term Var} {x y : Var} : - (m.swap x y).fv = m.fv.image fun z => if z = x then y else if z = y then x else z := by + (m.swap x y).fv = m.fv.image fun z => if z = x then y else if z = y then x else z := by induction m with - | var z => - unfold fv - aesop + | var z => aesop | abs z m ih => - simp_all +decide only [Term.swap, Term.fv] - simp [Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff] + simp_all +decide [Term.swap, Term.fv, Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff] grind | app m n ih1 ih2 => simp_all +decide only [Term.swap, Term.fv] rw [Finset.image_union] /-- Swapping preserves non-membership in `fv`. -/ -lemma fresh_swap {m : Term Var} {x y z : Var} - (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.fv) : +lemma fresh_swap {m : Term Var} {x y z : Var} (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.fv) : z ∉ (m.swap x y).fv := by rw [swap_fv] grind /-- The set of vars after a swap. -/ lemma swap_vars {m : Term Var} {x y z : Var} (hzm : z ∉ m.vars) : - (m.swap x y).vars = - m.vars.image fun z => if z = x then y else if z = y then x else z := by - induction m with - | var w => - simp +decide [Term.swap, Term.vars] - | abs w m ih => simp_all +decide [Term.swap, Term.vars] - | app m n ih1 ih2 => - simp_all +decide only [Term.swap, Term.vars] - rw [Finset.image_union] - grind + (m.swap x y).vars = m.vars.image fun z => if z = x then y else if z = y then x else z := by + induction m with + | var w => aesop + | abs w m ih => simp_all +decide [Term.swap, Term.vars] + | app m n ih1 ih2 => + simp_all +decide only [Term.swap, Term.vars, Finset.image_union] + grind /-- Swapping preserves non-membership in `vars`. -/ lemma not_mem_vars_swap {m : Term Var} {x y z : Var} @@ -129,11 +118,7 @@ lemma not_mem_vars_swap {m : Term Var} {x y z : Var} rw [swap_vars hzm] grind -/-! ### Swap-rename commutation -/ - -/-- Helper function: the action of the transposition `(u v)` on a single variable. -Corresponds to the permutation `(u v)` applied to an atom, as used throughout -[Crole2012]. -/ +/-- Helper function: the action of the transposition `(u v)` on a single variable `z`. -/ @[simp] def swapVar (u v z : Var) : Var := if z = u then v else if z = v then u else z @@ -146,18 +131,11 @@ lemma swapVar_fixed {u v z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : /-- `swapVar` is injective (permutations are bijections). -/ lemma swapVar_injective (u v : Var) : Function.Injective (swapVar u v) := by unfold Function.Injective - intro a b - unfold swapVar aesop -/-- `swap` and `rename` commute (modulo the permutation action on the variable -arguments). - -This is used in the proof of Lemma 6.1 [Crole2012] to handle the case analysis on -variable equalities in the `abs` case. -/ +/-- `swap` and `rename` commute (modulo the permutation action on the variable arguments). -/ lemma swap_rename_comm {m : Term Var} {u v x y : Var} : - (m.swap u v).rename (swapVar u v x) (swapVar u v y) = - (m.rename x y).swap u v := by + (m.swap u v).rename (swapVar u v x) (swapVar u v y) = (m.rename x y).swap u v := by induction m with | var z => simp_all +decide [Term.swap, Term.rename, swapVar] @@ -168,161 +146,266 @@ lemma swap_rename_comm {m : Term Var} {u v x y : Var} : | app m n ih1 ih2 => simp_all +decide [Term.swap, Term.rename, swapVar] -lemma swap_rename_comm' {m : Term Var} {u v x z : Var} - (hzu : z ≠ u) (hzv : z ≠ v) : - (m.swap u v).rename (swapVar u v x) z = - (m.rename x z).swap u v := by +lemma swap_rename_comm' {m : Term Var} {u v x z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : + (m.swap u v).rename (swapVar u v x) z = (m.rename x z).swap u v := by rw [← @swap_rename_comm _ _ m u v x z] simp_all -def agreementSet (f g : Var → Var) : Set Var := { x | f x = g x } - -def disagreementSet (f g : Var → Var) : Set Var := { x | f x ≠ g x } - -/-- The composition `(z u) ∘ (u a)` agrees with `(z a)` on all variables outside -`{u, z}`. - -This is the key agreement set computation used in the proof of Theorem 4.1 in -[Crole2012]: when `u, z ∉ free(E)`, we have -`free(E) ⊆ A − {u, z} = AS((z u) ∘ (u a), (z a))`. -/ -lemma agreementSet_swap_comp {a u z : Var} (huz : u ≠ z) : - {x : Var | x ≠ u ∧ x ≠ z} ⊆ - agreementSet (swapVar z u ∘ swapVar u a) (swapVar z a) := by - intro x ⟨hxu, hxz⟩ - simp [agreementSet, Function.comp, swapVar] - aesop - -/-! ### Lemma 6.2: Agreement on free/occurring variables implies equivalence - -**Lemma 6.2** [Crole2012]: - -1. For any expression `E` and permutations `π`, `π'`: - `occ(E) ⊆ AS(π, π')` implies `π · E = π' · E` (syntactic equality). - -2. For any expression `E` and permutations `π`, `π'`: - `free(E) ⊆ AS(π, π')` implies `π · E ∼p π' · E` (α-equivalence). - -Part 1 says that permutations agreeing on all occurring variables produce syntactically -identical results. Part 2 weakens this to free variables, at the cost of getting only -α-equivalence instead of syntactic equality. - -These lemmas are the workhorses behind the proofs of equivalence of α-equivalence -definitions in [Crole2012] (Section 4), particularly Theorems 4.1 and 4.2. --/ - -/-- Helper: the composition `(z u) ∘ (u a)` agrees with `(z a)` on variables -outside `{u, z}`. - -This is used in the agreement set arguments of Theorem 4.1 [Crole2012]: -`free(E) ⊆ A − {u, z} = AS((z u) ∘ (u a), (z a))`. -/ -lemma swap_comp_eq_swap_of_not_eq {x a u z : Var} - (hxu : x ≠ u) (hxz : x ≠ z) : - swapVar z u (swapVar u a x) = swapVar z a x := by - unfold swapVar; aesop; - -/-- **Lemma 6.2 part 1** [Crole2012] (specialized): If two composed transpositions -agree on all occurring variables, their actions are syntactically equal. - -Specialized form: if `u, z ∉ vars(m)`, then `(m.swap u a).swap z u = m.swap z a`. - -This follows from the general statement of Lemma 6.2 part 1: since -`u, z ∉ occ(E)`, we have `occ(E) ⊆ AS((z u) ∘ (u a), (z a))`, and therefore -`(z u) · (u a) · E = (z a) · E`. - -The general statement is: for any expression `E` and permutations `π`, `π'`, -`occ(E) ⊆ AS(π, π')` implies `π · E = π' · E`. -/ lemma swap_comp_eq_of_not_mem_vars {m : Term Var} {a u z : Var} (hu : u ∉ m.vars) (hz : z ∉ m.vars) : (m.swap u a).swap z u = m.swap z a := by - induction m; - · simp_all +decide [ Term.swap, Term.vars ]; - grind; - · simp_all +decide [ Term.swap, Term.vars ]; - split_ifs <;> simp_all +decide [ eq_comm ]; - · simp_all +decide [ Term.swap, Term.vars ] - -variable [HasFresh Var] + induction m + · simp_all +decide [Term.swap, Term.vars] + grind + · simp_all +decide [Term.swap, Term.vars] + grind + · simp_all +decide [Term.swap, Term.vars] -/-! ### Lemma 6.1: Swap preserves α-equivalence +/-- Pointwise version of the transposition-conjugation identity +`(u v) ∘ (u a) = (v a) ∘ (u v)` for `a ∉ {u, v}` -/ +lemma swapVar_conj {a u v w : Var} (huv : u ≠ v) (hau : a ≠ u) (hav : a ≠ v) : + swapVar v a (swapVar u v w) = swapVar u v (swapVar u a w) := by + unfold swapVar + grind -**Lemma 6.1** [Crole2012]: For any atoms `u` and `v` and expressions `E` and `E'`, -`E ∼p E'` implies `(u v) · E ∼p (u v) · E'`. +/-- Term-level conjugation identity: `(m.swap u v).swap v a = (m.swap u a).swap u v` +when `a ∉ {u, v}`. -The proof uses well-founded induction on the size of expressions, with a case analysis -on the possible equalities between atoms in the `abs` case. The key difficulty is that -for the abstraction case `B([a]E) ∼p B([b]E')`, one must handle 17 non-trivial -combinations of equalities between `a`, `b`, the witness `z`, and the swap atoms `u`, -`v`. +Unlike `swap_comp_eq_of_not_mem_vars`, this holds unconditionally (no freshness needed). -/ +lemma swap_comp_eq_of_ne {m : Term Var} {a u v : Var} (hau : a ≠ u) (hav : a ≠ v) : + (m.swap u v).swap v a = (m.swap u a).swap u v := by + induction m with + | var x => simp_all +decide [Term.swap]; grind + | app m n ihm ihn => simp [Term.swap, ihm, ihn] + | abs x m ih => simp [Term.swap, ih]; grind + +/-- If `u` is not among `m`'s variables, then `v` cannot appear in `m.swap u v` +(the only way `v` could show up is as the image of `u`). -/ +lemma not_mem_swap_target {m : Term Var} {u v : Var} (hu : u ∉ m.vars) : + v ∉ (m.swap u v).vars := by + rw [swap_vars hu] + grind -This approach via case analysis on atom equalities follows [Crole2012] (Section 6.1, -Lemma 6.1). --/ +-- First 4 case examination +lemma desired_condition_cases_z_ne_u_or_v {E E' : Term Var} {a b u v z : Var} + (hm1 : z ∉ E.vars ∪ E'.vars ∪ {a, b}) + (h2 : ((E.rename a z).swap u v) =α ((E'.rename b z).swap u v)) + (hzu : z ≠ u) + (hzv : z ≠ v) + : ((E.swap u v).swap (swapVar u v a) z) =α ((E'.swap u v).swap (swapVar u v b) z) := by + have hzb : z ≠ b := by simp_all + have hza : z ≠ a := by simp_all + have z_h1 : z ∉ (E.swap u v).vars := by exact not_mem_vars_swap hzu hzv (by simp_all) + have z_h2 : z ∉ (E'.swap u v).vars := by exact not_mem_vars_swap hzu hzv (by simp_all) + rw [swap_eq_rename_of_not_mem_vars z_h1] + rw [swap_eq_rename_of_not_mem_vars z_h2] + rw [← swap_rename_comm' (by grind) (by grind)] at h2 + rw [← swap_rename_comm' (by grind) (by grind)] at h2 + unfold swapVar at h2 + have ha : a = u ∨ a = v ∨ (a ≠ u ∧ a ≠ v) := by grind + have hb : b = u ∨ b = v ∨ (b ≠ u ∧ b ≠ v) := by grind + rcases ha with h' | h' | ⟨hau, hav⟩ + · rcases hb with h'' | h'' | ⟨hbu, hbv⟩ <;> simp_all +decide + · rcases hb with h'' | h'' | ⟨hbu, hbv⟩ <;> simp_all +decide + · rcases hb with h'' | h'' | ⟨hbu, hbv⟩ <;> simp_all +decide + +-- example 1: use z as witness +lemma alphaEquiv_swap_preserve_abs_fresh {E E' : Term Var} {a b u v z : Var} + (hm : z ∉ E.vars ∪ E'.vars ∪ {a, b}) + (hbody : ((E.rename a z).swap u v) =α ((E'.rename b z).swap u v)) + (hzu : z ≠ u) (hzv : z ≠ v) : + ((Term.abs a E).swap u v) =α ((Term.abs b E').swap u v) := by + have hzE : z ∉ (E.swap u v).vars := not_mem_vars_swap hzu hzv (by simp_all) + have hzE' : z ∉ (E'.swap u v).vars := not_mem_vars_swap hzu hzv (by simp_all) + have hren := desired_condition_cases_z_ne_u_or_v hm hbody hzu hzv + rw [swap_eq_rename_of_not_mem_vars hzE, swap_eq_rename_of_not_mem_vars hzE'] at hren + simp only [Term.swap] + apply AlphaEquiv.abs (y := z) + · simp only [Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] + grind + · simpa [swapVar] using hren + +-- example 2: use v as witness +lemma alphaEquiv_swap_preserve_abs_fresh_z_eq_u {E E' : Term Var} {a b u v : Var} + (hm : u ∉ E.vars ∪ E'.vars ∪ {a, b}) + (hbody : ((E.rename a u).swap u v) =α ((E'.rename b u).swap u v)) + (hau : a ≠ u) (hav : a ≠ v) (hbu : b ≠ u) (hbv : b ≠ v) : + ((Term.abs a E).swap u v) =α ((Term.abs b E').swap u v) := by + have huE : u ∉ E.vars := by simp_all + have huE' : u ∉ E'.vars := by simp_all + rw [← swap_eq_rename_of_not_mem_vars huE, ← swap_eq_rename_of_not_mem_vars huE'] at hbody + rw [swap_comm (m := E) (x := a) (y := u), swap_comm (m := E') (x := b) (y := u)] at hbody + rw [← swap_comp_eq_of_ne hau hav, ← swap_comp_eq_of_ne hbu hbv] at hbody + rw [swap_comm (m := E.swap u v) (x := v) (y := a), + swap_comm (m := E'.swap u v) (x := v) (y := b)] at hbody + have hvE : v ∉ (E.swap u v).vars := not_mem_swap_target huE + have hvE' : v ∉ (E'.swap u v).vars := not_mem_swap_target huE' + rw [swap_eq_rename_of_not_mem_vars hvE, swap_eq_rename_of_not_mem_vars hvE'] at hbody + simp only [Term.swap] + apply AlphaEquiv.abs (y := v) <;> (simp_all +decide; grind) + +-- example 3 +lemma alphaEquiv_swap_preserve_abs_b_eq_u {E E' : Term Var} {a u v : Var} + (hm : v ∉ E.vars ∪ E'.vars ∪ {a}) + (hbody : ((E.rename a v).swap u v) =α ((E'.rename u v).swap u v)) + (hau : a ≠ u) (hav : a ≠ v) (huv : u ≠ v) : + ((Term.abs a E).swap u v) =α ((Term.abs u E').swap u v) := by + have hvE : v ∉ E.vars := by simp_all + have hvE' : v ∉ E'.vars := by simp_all + have huE : u ∉ (E.swap u v).vars := by rw [swap_comm]; exact not_mem_swap_target hvE + have huE' : u ∉ (E'.swap u v).vars := by rw [swap_comm]; exact not_mem_swap_target hvE' + have hL : (E.swap u v).rename a u = (E.rename a v).swap u v := by + have h := @swap_rename_comm _ _ E u v a v + simpa [swapVar, hau, hav, huv, huv.symm] using h + have hR : (E'.swap u v).rename v u = (E'.rename u v).swap u v := by + have h := @swap_rename_comm _ _ E' u v u v + simpa [swapVar, huv, huv.symm] using h + have hbody' : ((E.swap u v).rename a u) =α ((E'.swap u v).rename v u) := by + rw [hL, hR]; exact hbody + apply AlphaEquiv.abs (y := u) + · simp only [Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] + grind + · simp_all +decide only [Finset.union_singleton, Finset.mem_insert, Finset.mem_union, + or_self, or_false, ne_eq, reduceIte] + exact hbody + +-- example 4 +lemma alphaEquiv_swap_preserve_abs_a_eq_b_eq_u {E E' : Term Var} {u v : Var} + (hm : v ∉ E.vars ∪ E'.vars ∪ {u}) + (ih : ((E.rename u v).swap u v) =α ((E'.rename u v).swap u v)) (huv : u ≠ v) : + ((Term.abs u E).swap u v) =α ((Term.abs u E').swap u v) := by + have hvE : v ∉ E.vars := by simp_all + have hvE' : v ∉ E'.vars := by simp_all + rw [← swap_eq_rename_of_not_mem_vars hvE, ← swap_eq_rename_of_not_mem_vars hvE'] at ih + rw [swap_involutive, swap_involutive] at ih + -- now have ih : E =α E' + have huE : u ∉ (E.swap u v).vars := by + have h := not_mem_swap_target (u := v) (v := u) hvE + rwa [swap_comm] at h + have huE' : u ∉ (E'.swap u v).vars := by + have h := not_mem_swap_target (u := v) (v := u) hvE' + rw [swap_comm] at h + exact h + apply AlphaEquiv.abs (y := u) + · simp only [Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] + grind + · rw [← swap_eq_rename_of_not_mem_vars huE, ← swap_eq_rename_of_not_mem_vars huE'] + simp_all +decide only [Finset.union_singleton, Finset.mem_insert, Finset.mem_union, or_self, + reduceIte, swap_comm, swap_involutive] + exact ih -/-- **Lemma 6.1** [Crole2012]: Swap (transposition) preserves α-equivalence. +variable [HasFresh Var] -This is the key equivariance property of the swapping action: α-equivalence is -preserved under atom transpositions. --/ +/-- Lemma 6.1 [Crole2012]: Swap (transposition) preserves α-equivalence. -/ lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : m =α m' → (m.swap u v) =α (m'.swap u v) := by - by_contra h - obtain ⟨m, m', h_eq, h_neq⟩ : - ∃ m m' : Term Var, m =α m' ∧ ¬(m.swap u v) =α (m'.swap u v) := by grind - obtain ⟨m, m', h_eq, h_neq, h_min⟩ : - ∃ m m' : Term Var, m =α m' ∧ - ¬(m.swap u v) =α (m'.swap u v) ∧ - ∀ n n' : Term Var, n =α n' → sizeOf n < sizeOf m → - (n.swap u v) =α (n'.swap u v) := by - have h_wf : WellFounded (fun m n : ℕ => m < n) := by - exact wellFounded_lt; - have := h_wf.has_min - { n : ℕ | ∃ m m' : Term Var, m =α m' ∧ - ¬ ( m.swap u v ) =α ( m'.swap u v ) ∧ - n = sizeOf m } - ⟨ _, ⟨ m, m', h_eq, h_neq, rfl ⟩ ⟩; - obtain ⟨ a, ⟨ m, m', h_eq, h_neq, rfl ⟩, ha ⟩ := this; - exact ⟨ m, m', h_eq, h_neq, fun n n' h_eq' h_lt => - Classical.not_not.1 fun h_neq' => - ha _ ⟨ n, n', h_eq', h_neq', rfl ⟩ h_lt ⟩ ; - obtain ⟨x1, x2, m1, m2, h_eq⟩ : - ∃ x1 x2 : Var, ∃ m1 m2 : Term Var, - m = Term.abs x1 m1 ∧ - m' = Term.abs x2 m2 ∧ ∃ y : Var, - y ∉ m1.vars ∪ m2.vars ∪ {x1, x2} ∧ - (m1.rename x1 y) =α (m2.rename x2 y) := by - all_goals rcases h_eq with ⟨ ⟩; - · exact False.elim <| h_neq <| AlphaEquiv.refl _; - · grind; - · exact False.elim <| h_neq <| AlphaEquiv.app - ( h_min _ _ ‹_› <| by simp +arith +decide ) - ( h_min _ _ ‹_› <| by simp +arith +decide ); - obtain ⟨y, hy₁, hy₂⟩ := h_eq.2.2; - -- Pick z fresh for m1.vars ∪ m2.vars ∪ {x1, x2, u, v}. - obtain ⟨z, hz⟩ : - ∃ z : Var, z ∉ m1.vars ∪ m2.vars ∪ {x1, x2, u, v} := by - exact Infinite.exists_notMem_finset (m1.vars ∪ m2.vars ∪ {x1, x2, u, v}) - have hz_eq : (m1.rename x1 z) =α (m2.rename x2 z) := by - apply AlphaEquiv.abs_elim; all_goals grind; - have hz_swap : - ((m1.swap u v).rename (swapVar u v x1) z) =α - ((m2.swap u v).rename (swapVar u v x2) z) := by - have hz_swap : - ((m1.swap u v).rename (swapVar u v x1) z) = - ((m1.rename x1 z).swap u v) ∧ - ((m2.swap u v).rename (swapVar u v x2) z) = - ((m2.rename x2 z).swap u v) := by - exact ⟨swap_rename_comm' (by grind) (by grind), - swap_rename_comm' (by grind) (by grind)⟩ - grind +suggestions; - have hz_abs : - (Term.abs (swapVar u v x1) (m1.swap u v)) =α - (Term.abs (swapVar u v x2) (m2.swap u v)) := by - apply AlphaEquiv.abs; - any_goals assumption; - simp_all +decide [ Finset.mem_union ]; - grind +suggestions; - exact h_neq ( by simpa [ h_eq ] using hz_abs ) - + intro h1 + by_cases h2 : u = v + · simp_all + · change u ≠ v at h2 + induction h1 with + | var => simp_all +decide [AlphaEquiv.refl] + | abs hm1 hm2 ih => + rename_i z a b E E' + have z_h1 : z ≠ a := by simp_all + have z_h2 : z ≠ b := by simp_all + have h3 : a = u ∨ a = v ∨ (a ≠ u ∧ a ≠ v) := by grind + have h4 : b = u ∨ b = v ∨ (b ≠ u ∧ b ≠ v) := by grind + have h5 : z = u ∨ z = v ∨ (z ≠ u ∧ z ≠ v) := by grind + rcases h3 with ha | ha | ⟨hau, hav⟩ + · rcases h4 with hb | hb | ⟨hbu, hbv⟩ + · rcases h5 with hz | hz | ⟨hzu, hzv⟩ + · simp_all + -- representative example 4 case of: a = u; b = u; z = v + · subst ha; subst hb; subst hz + exact alphaEquiv_swap_preserve_abs_a_eq_b_eq_u (by simp_all) ih h2 + -- example 1 reuse + · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv + · rcases h5 with hz | hz | ⟨hzu, hzv⟩ + · simp_all + · simp_all + -- example 1 reuse + · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv + · rcases h5 with hz | hz | ⟨hzu, hzv⟩ + · simp_all + -- example 3 reuse + · subst ha; subst hz + apply AlphaEquiv.symm + exact (alphaEquiv_swap_preserve_abs_b_eq_u (by grind) (AlphaEquiv.symm ih) hbu hbv h2) + -- example 1 reuse + · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv + · rcases h4 with hb | hb | ⟨hbu, hbv⟩ + · rcases h5 with hz | hz | ⟨hzu, hzv⟩ + · simp_all + · simp_all + -- example 1 reuse + · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv + · rcases h5 with hz | hz | ⟨hzu, hzv⟩ + -- example 4 reuse + · subst ha; subst hb; subst hz + nth_rw 1 [swap_comm] + nth_rw 2 [swap_comm] + symm at z_h2 + nth_rw 1 [swap_comm] at ih + nth_rw 2 [swap_comm] at ih + apply alphaEquiv_swap_preserve_abs_a_eq_b_eq_u (by simp_all) ih z_h2 + · simp_all + -- example 1 reuse + · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv + · rcases h5 with hz | hz | ⟨hzu, hzv⟩ + -- example 3 reuse + · subst ha; subst hz + nth_rw 1 [swap_comm] + nth_rw 2 [swap_comm] + apply AlphaEquiv.symm + symm at h2 + apply alphaEquiv_swap_preserve_abs_b_eq_u (by simp_all) _ hbv hbu h2 + apply AlphaEquiv.symm + nth_rw 1 [swap_comm] + nth_rw 2 [swap_comm] + exact ih + · simp_all + -- example 1 reuse + · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv + · rcases h4 with hb | hb | ⟨hbu, hbv⟩ + · rcases h5 with hz | hz | ⟨hzu, hzv⟩ + · simp_all + -- representative example 3 case of: a ≠ u, v; b = u; z = v + · subst hb; subst hz + exact alphaEquiv_swap_preserve_abs_b_eq_u (by simp_all) ih hau hav h2 + -- example 1 reuse + · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv + · rcases h5 with hz | hz | ⟨hzu, hzv⟩ + -- example 3 reuse + · subst hb; subst hz + nth_rw 1 [swap_comm] + nth_rw 2 [swap_comm] + symm at h2 + apply alphaEquiv_swap_preserve_abs_b_eq_u (by simp_all) _ hav hau h2 + nth_rw 1 [swap_comm] + nth_rw 2 [swap_comm] + exact ih + · simp_all + -- example 1 reuse + · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv + · rcases h5 with hz | hz | ⟨hzu, hzv⟩ + -- representative example 2 case of: a ≠ u, v; b ≠ u, v; z = u + -- use z' = v + · subst hz + exact alphaEquiv_swap_preserve_abs_fresh_z_eq_u hm1 ih hau hav hbu hbv + -- example 2 reuse after adjusting via swap commutativity and choosing z' = u + · rw [swap_comm (m := Term.abs a E) (x := u) (y := v), + swap_comm (m := Term.abs b E') (x := u) (y := v)] + subst hz + nth_rw 1 [swap_comm] at ih + nth_rw 2 [swap_comm] at ih + exact alphaEquiv_swap_preserve_abs_fresh_z_eq_u hm1 ih hav hau hbv hbu + -- representative example 1 case of: z ≠ u, v + -- use z' = z + · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv + | app hm1 hm2 ih1 ih2 => exact AlphaEquiv.app ih1 ih2 + +-- TODO part 1 /-! ### Lemma 6.2 part 2 (α-equivalence version) -/ /-- Helper: if `y₁ ∉ fv(m)` and `y₂ ∉ fv(m)`, there exists `m'` α-equivalent to `m` @@ -399,25 +482,85 @@ lemma swap_comp_alphaEquiv_of_not_mem_fv {m : Term Var} {a u z : Var} -- = m'.swap z a =α m.swap z a exact AlphaEquiv.trans h1 h2 +/-- Congruence of α-equivalence under abstraction: α-equivalent bodies under the same +binder yield α-equivalent abstractions. This is the syntax-directed congruence rule used +in the inductive proof of Lemma 6.6 (corresponding to rule `bcg` of `∼r` in [Crole2012]). -/ +theorem AlphaEquiv.abs_congr {m m' : Term Var} {x : Var} : + m =α m' → (Term.abs x m) =α (Term.abs x m') := by + intro h + obtain ⟨y, hy⟩ := HasFresh.fresh_exists (m.vars ∪ m'.vars ∪ {x}) + apply AlphaEquiv.abs (y := y) + · grind + · apply AlphaEquiv.rename_preserve <;> grind + /-- **Lemma 6.6** [Crole2012] (Barendregt variable convention): For any term `m` and variable `y` with `y ∉ fv(m)`, there exists `m'` α-equivalent to `m` with `y ∉ vars(m')`. -Informally, we can always rename bound atoms so that a particular atom does not -occur. -/ +Informally, we can always rename bound atoms so that a particular atom does not occur. -/ lemma exists_alphaEquiv_not_mem_vars {m : Term Var} {y : Var} (hy : y ∉ m.fv) : ∃ m', m =α m' ∧ y ∉ m'.vars := by - by_contra h; + by_contra h convert Classical.byContradiction fun h' => ?_; - convert h'; - convert Classical.not_not; - simp_all only [not_exists, not_and, Decidable.not_not, - not_false_eq_true, not_true_eq_false] - convert h ( m.rename y ( HasFresh.fresh ( m.vars ∪ { y } ) ) ) ( by - grind +suggestions ) using 1 + convert h' + convert Classical.not_not + simp_all only [not_exists, not_and, Decidable.not_not, not_false_eq_true, not_true_eq_false] + convert h ( m.rename y ( HasFresh.fresh ( m.vars ∪ { y } ) ) ) ( by grind +suggestions ) using 1 simp +decide [rename_vars] grind +/-- **Lemma 6.6** [Crole2012] (Barendregt variable convention): +For any term `m` and variable `y` with `y ∉ fv(m)`, +there exists `m'` α-equivalent to `m` with `y ∉ vars(m')`. + +Informally, we can always rename bound atoms so that a particular atom does not occur. + +The proof follows [Crole2012] (Lemma 6.6): we induct over the size of expressions. +* For a variable `var z`, freshness `y ∉ fv(var z)` gives `y ≠ z`, so `var z` itself works. +* For an application `app m₁ m₂`, `y` is free in neither `m₁` nor `m₂`, so the inductive + hypothesis applied to each subterm yields the result by congruence. +* For an abstraction `abs b m₀` we have `y ∉ fv(abs b m₀) = fv(m₀) \ {b}`, so either + `y ∉ fv(m₀)` or `y = b`. + - If `y ≠ b` (hence `y ∉ fv(m₀)`), the inductive hypothesis on `m₀` gives `m₀'` with + `m₀ =α m₀'` and `y ∉ vars(m₀')`; then `abs b m₀'` works (using `abs_congr`). + - If `y = b`, pick `z ∉ vars(m₀) ∪ {y}`; then `abs y m₀ =α abs z (m₀.rename y z)` + (`abs_rename`), and since `y ∉ fv(m₀.rename y z)`, the inductive hypothesis applied to + `m₀.rename y z` (which has the same size as `m₀`) gives `m₀'` with + `m₀.rename y z =α m₀'` and `y ∉ vars(m₀')`; then `abs z m₀'` works, by `abs_congr` + and transitivity. -/ +lemma exists_alphaEquiv_not_mem_vars' {m : Term Var} {y : Var} + (hy : y ∉ m.fv) : ∃ m', m =α m' ∧ y ∉ m'.vars := by + refine WellFounded.induction + (C := fun m => ∀ y : Var, y ∉ m.fv → ∃ m', m =α m' ∧ y ∉ m'.vars) + sizeOfWFRel.wf m ?_ y hy + clear hy y m + intro m ih y hy + cases m with + | var z => + exact ⟨var z, AlphaEquiv.refl _, by grind [vars, fv]⟩ + | app m1 m2 => + obtain ⟨m1', hm1', hym1'⟩ := ih m1 (by grind) y (by grind [fv]) + obtain ⟨m2', hm2', hym2'⟩ := ih m2 (by grind) y (by grind [fv]) + exact ⟨app m1' m2', AlphaEquiv.app hm1' hm2', by grind [vars]⟩ + | abs b m0 => + by_cases hyb : y = b + · -- Latter case `y = b`: rename the bound atom to a fresh `z` and recurse. + subst hyb + obtain ⟨z, hz⟩ := HasFresh.fresh_exists (m0.vars ∪ {y}) + have hzvars : z ∉ m0.vars := by grind + have hzy : z ≠ y := by grind + have h1 : (Term.abs y m0) =α (Term.abs z (m0.rename y z)) := + AlphaEquiv.abs_rename (by grind) + have hyfv : y ∉ (m0.rename y z).fv := by grind [rename_fv] + obtain ⟨m0', hm0', hym0'⟩ := + ih (m0.rename y z) (by grind [rename_eq_sizeOf]) y hyfv + refine ⟨Term.abs z m0', AlphaEquiv.trans h1 (AlphaEquiv.abs_congr hm0'), ?_⟩ + grind [vars] + · -- Former case `y ∉ fv(m₀)`: recurse on the body directly. + have hyfv : y ∉ m0.fv := by grind [fv] + obtain ⟨m0', hm0', hym0'⟩ := ih m0 (by grind) y hyfv + exact ⟨Term.abs b m0', AlphaEquiv.abs_congr hm0', by grind [vars]⟩ + end LambdaCalculus.Named.Untyped.Term end Cslib From 5e12d6fbfb4b6893e61bdf4dde367cb145cbd672 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Mon, 20 Jul 2026 08:30:47 +0000 Subject: [PATCH 06/12] removes lemma 6.6 for now --- .../Named/Untyped/SwapProperties.lean | 153 +++++------------- 1 file changed, 41 insertions(+), 112 deletions(-) diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean index 5ff4f46b4..7ccd381ac 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean @@ -296,6 +296,14 @@ lemma alphaEquiv_swap_preserve_abs_a_eq_b_eq_u {E E' : Term Var} {u v : Var} variable [HasFresh Var] +lemma AlphaEquiv.abs_congr {m m' : Term Var} {x : Var} : + m =α m' → (Term.abs x m) =α (Term.abs x m') := by + intro h + obtain ⟨y, hy⟩ := HasFresh.fresh_exists (m.vars ∪ m'.vars ∪ {x}) + apply AlphaEquiv.abs (y := y) + · grind + · apply AlphaEquiv.rename_preserve <;> grind + /-- Lemma 6.1 [Crole2012]: Swap (transposition) preserves α-equivalence. -/ lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : m =α m' → (m.swap u v) =α (m'.swap u v) := by @@ -408,42 +416,42 @@ lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : -- TODO part 1 /-! ### Lemma 6.2 part 2 (α-equivalence version) -/ -/-- Helper: if `y₁ ∉ fv(m)` and `y₂ ∉ fv(m)`, there exists `m'` α-equivalent to `m` -with both `y₁ ∉ vars(m')` and `y₂ ∉ vars(m')`. -/ -lemma exists_alphaEquiv_not_mem_vars_pair {m : Term Var} {y₁ y₂ : Var} - (h₁ : y₁ ∉ m.fv) (h₂ : y₂ ∉ m.fv) : - ∃ m', m =α m' ∧ y₁ ∉ m'.vars ∧ y₂ ∉ m'.vars := by - -- Step 1: Rename y₁ to a fresh variable, avoiding both y₁ and y₂. - let f₁ := HasFresh.fresh (m.vars ∪ {y₁, y₂}) - have hf₁ : f₁ ∉ m.vars ∪ {y₁, y₂} := HasFresh.fresh_notMem _ - let m₁ := m.rename y₁ f₁ - have hf₁_ne_y₁ : f₁ ≠ y₁ := by intro h; exact hf₁ (by simp [h]) - have hf₁_ne_y₂ : f₁ ≠ y₂ := by intro h; exact hf₁ (by simp [h]) - have hf₁_vars : f₁ ∉ m.vars := by intro h; exact hf₁ (Finset.mem_union_left _ h) - have hm₁_alpha : m =α m₁ := AlphaEquiv.rename_non_fv h₁ hf₁_vars - have hy₁_m₁ : y₁ ∉ m₁.vars := rename_remove hf₁_ne_y₁.symm - -- y₂ ∉ fv(m₁) since fv is preserved by α-equivalence. - have hy₂_fv_m₁ : y₂ ∉ m₁.fv := - AlphaEquiv.same_fv hm₁_alpha ▸ h₂ - -- Step 2: Rename y₂ to a fresh variable, avoiding both y₁ and y₂. - let f₂ := HasFresh.fresh (m₁.vars ∪ {y₁, y₂}) - have hf₂ : f₂ ∉ m₁.vars ∪ {y₁, y₂} := HasFresh.fresh_notMem _ - let m₂ := m₁.rename y₂ f₂ - have hf₂_ne_y₁ : f₂ ≠ y₁ := by intro h; exact hf₂ (by simp [h]) - have hf₂_ne_y₂ : f₂ ≠ y₂ := by intro h; exact hf₂ (by simp [h]) - have hf₂_vars : f₂ ∉ m₁.vars := by intro h; exact hf₂ (Finset.mem_union_left _ h) - have hm₂_alpha : m₁ =α m₂ := AlphaEquiv.rename_non_fv hy₂_fv_m₁ hf₂_vars - have hy₂_m₂ : y₂ ∉ m₂.vars := rename_remove hf₂_ne_y₂.symm - -- y₁ ∉ vars(m₂): by rename_vars, vars(m₂) ⊆ (vars(m₁) \ {y₂}) ∪ {f₂}. - -- Since y₁ ∉ vars(m₁) and f₂ ≠ y₁, we conclude y₁ ∉ vars(m₂). - have hy₁_m₂ : y₁ ∉ m₂.vars := by - simp only [m₂, rename_vars, Finset.mem_union, Finset.mem_sdiff, +/-- Helper: if `y1 ∉ fv(m)` and `y2 ∉ fv(m)`, there exists `m'` α-equivalent to `m` +with both `y1 ∉ vars(m')` and `y2 ∉ vars(m')`. -/ +lemma exists_alphaEquiv_not_mem_vars_pair {m : Term Var} {y1 y2 : Var} + (h1 : y1 ∉ m.fv) (h2 : y2 ∉ m.fv) : + ∃ m', m =α m' ∧ y1 ∉ m'.vars ∧ y2 ∉ m'.vars := by + -- Step 1: Rename y1 to a fresh variable, avoiding both y1 and y2. + let f1 := HasFresh.fresh (m.vars ∪ {y1, y2}) + have hf1 : f1 ∉ m.vars ∪ {y1, y2} := HasFresh.fresh_notMem _ + let m1 := m.rename y1 f1 + have hf1_ne_y1 : f1 ≠ y1 := by intro h; exact hf1 (by simp [h]) + have hf1_ne_y2 : f1 ≠ y2 := by intro h; exact hf1 (by simp [h]) + have hf1_vars : f1 ∉ m.vars := by intro h; exact hf1 (Finset.mem_union_left _ h) + have hm1_alpha : m =α m1 := AlphaEquiv.rename_non_fv h1 hf1_vars + have hy1_m1 : y1 ∉ m1.vars := rename_remove hf1_ne_y1.symm + -- y2 ∉ fv(m1) since fv is preserved by α-equivalence. + have hy2_fv_m1 : y2 ∉ m1.fv := + AlphaEquiv.same_fv hm1_alpha ▸ h2 + -- Step 2: Rename y2 to a fresh variable, avoiding both y1 and y2. + let f2 := HasFresh.fresh (m1.vars ∪ {y1, y2}) + have hf2 : f2 ∉ m1.vars ∪ {y1, y2} := HasFresh.fresh_notMem _ + let m2 := m1.rename y2 f2 + have hf2_ne_y1 : f2 ≠ y1 := by intro h; exact hf2 (by simp [h]) + have hf2_ne_y2 : f2 ≠ y2 := by intro h; exact hf2 (by simp [h]) + have hf2_vars : f2 ∉ m1.vars := by intro h; exact hf2 (Finset.mem_union_left _ h) + have hm2_alpha : m1 =α m2 := AlphaEquiv.rename_non_fv hy2_fv_m1 hf2_vars + have hy2_m2 : y2 ∉ m2.vars := rename_remove hf2_ne_y2.symm + -- y1 ∉ vars(m2): by rename_vars, vars(m2) ⊆ (vars(m1) \ {y2}) ∪ {f2}. + -- Since y1 ∉ vars(m1) and f2 ≠ y1, we conclude y1 ∉ vars(m2). + have hy1_m2 : y1 ∉ m2.vars := by + simp only [m2, rename_vars, Finset.mem_union, Finset.mem_sdiff, Finset.mem_singleton] intro h cases h with - | inl h => exact hy₁_m₁ h.1 - | inr h => split_ifs at h <;> simp_all [Ne.symm hf₂_ne_y₁] - exact ⟨m₂, AlphaEquiv.trans hm₁_alpha hm₂_alpha, hy₁_m₂, hy₂_m₂⟩ + | inl h => exact hy1_m1 h.1 + | inr h => split_ifs at h <;> simp_all [Ne.symm hf2_ne_y1] + exact ⟨m2, AlphaEquiv.trans hm1_alpha hm2_alpha, hy1_m2, hy2_m2⟩ /-- **Lemma 6.2 part 2** [Crole2012] (specialized): If two composed transpositions agree on all free variables, their actions are α-equivalent. @@ -482,85 +490,6 @@ lemma swap_comp_alphaEquiv_of_not_mem_fv {m : Term Var} {a u z : Var} -- = m'.swap z a =α m.swap z a exact AlphaEquiv.trans h1 h2 -/-- Congruence of α-equivalence under abstraction: α-equivalent bodies under the same -binder yield α-equivalent abstractions. This is the syntax-directed congruence rule used -in the inductive proof of Lemma 6.6 (corresponding to rule `bcg` of `∼r` in [Crole2012]). -/ -theorem AlphaEquiv.abs_congr {m m' : Term Var} {x : Var} : - m =α m' → (Term.abs x m) =α (Term.abs x m') := by - intro h - obtain ⟨y, hy⟩ := HasFresh.fresh_exists (m.vars ∪ m'.vars ∪ {x}) - apply AlphaEquiv.abs (y := y) - · grind - · apply AlphaEquiv.rename_preserve <;> grind - -/-- **Lemma 6.6** [Crole2012] (Barendregt variable convention): -For any term `m` and variable `y` with `y ∉ fv(m)`, -there exists `m'` α-equivalent to `m` with `y ∉ vars(m')`. - -Informally, we can always rename bound atoms so that a particular atom does not occur. -/ -lemma exists_alphaEquiv_not_mem_vars {m : Term Var} {y : Var} - (hy : y ∉ m.fv) : ∃ m', m =α m' ∧ y ∉ m'.vars := by - by_contra h - convert Classical.byContradiction fun h' => ?_; - convert h' - convert Classical.not_not - simp_all only [not_exists, not_and, Decidable.not_not, not_false_eq_true, not_true_eq_false] - convert h ( m.rename y ( HasFresh.fresh ( m.vars ∪ { y } ) ) ) ( by grind +suggestions ) using 1 - simp +decide [rename_vars] - grind - -/-- **Lemma 6.6** [Crole2012] (Barendregt variable convention): -For any term `m` and variable `y` with `y ∉ fv(m)`, -there exists `m'` α-equivalent to `m` with `y ∉ vars(m')`. - -Informally, we can always rename bound atoms so that a particular atom does not occur. - -The proof follows [Crole2012] (Lemma 6.6): we induct over the size of expressions. -* For a variable `var z`, freshness `y ∉ fv(var z)` gives `y ≠ z`, so `var z` itself works. -* For an application `app m₁ m₂`, `y` is free in neither `m₁` nor `m₂`, so the inductive - hypothesis applied to each subterm yields the result by congruence. -* For an abstraction `abs b m₀` we have `y ∉ fv(abs b m₀) = fv(m₀) \ {b}`, so either - `y ∉ fv(m₀)` or `y = b`. - - If `y ≠ b` (hence `y ∉ fv(m₀)`), the inductive hypothesis on `m₀` gives `m₀'` with - `m₀ =α m₀'` and `y ∉ vars(m₀')`; then `abs b m₀'` works (using `abs_congr`). - - If `y = b`, pick `z ∉ vars(m₀) ∪ {y}`; then `abs y m₀ =α abs z (m₀.rename y z)` - (`abs_rename`), and since `y ∉ fv(m₀.rename y z)`, the inductive hypothesis applied to - `m₀.rename y z` (which has the same size as `m₀`) gives `m₀'` with - `m₀.rename y z =α m₀'` and `y ∉ vars(m₀')`; then `abs z m₀'` works, by `abs_congr` - and transitivity. -/ -lemma exists_alphaEquiv_not_mem_vars' {m : Term Var} {y : Var} - (hy : y ∉ m.fv) : ∃ m', m =α m' ∧ y ∉ m'.vars := by - refine WellFounded.induction - (C := fun m => ∀ y : Var, y ∉ m.fv → ∃ m', m =α m' ∧ y ∉ m'.vars) - sizeOfWFRel.wf m ?_ y hy - clear hy y m - intro m ih y hy - cases m with - | var z => - exact ⟨var z, AlphaEquiv.refl _, by grind [vars, fv]⟩ - | app m1 m2 => - obtain ⟨m1', hm1', hym1'⟩ := ih m1 (by grind) y (by grind [fv]) - obtain ⟨m2', hm2', hym2'⟩ := ih m2 (by grind) y (by grind [fv]) - exact ⟨app m1' m2', AlphaEquiv.app hm1' hm2', by grind [vars]⟩ - | abs b m0 => - by_cases hyb : y = b - · -- Latter case `y = b`: rename the bound atom to a fresh `z` and recurse. - subst hyb - obtain ⟨z, hz⟩ := HasFresh.fresh_exists (m0.vars ∪ {y}) - have hzvars : z ∉ m0.vars := by grind - have hzy : z ≠ y := by grind - have h1 : (Term.abs y m0) =α (Term.abs z (m0.rename y z)) := - AlphaEquiv.abs_rename (by grind) - have hyfv : y ∉ (m0.rename y z).fv := by grind [rename_fv] - obtain ⟨m0', hm0', hym0'⟩ := - ih (m0.rename y z) (by grind [rename_eq_sizeOf]) y hyfv - refine ⟨Term.abs z m0', AlphaEquiv.trans h1 (AlphaEquiv.abs_congr hm0'), ?_⟩ - grind [vars] - · -- Former case `y ∉ fv(m₀)`: recurse on the body directly. - have hyfv : y ∉ m0.fv := by grind [fv] - obtain ⟨m0', hm0', hym0'⟩ := ih m0 (by grind) y hyfv - exact ⟨Term.abs b m0', AlphaEquiv.abs_congr hm0', by grind [vars]⟩ - end LambdaCalculus.Named.Untyped.Term end Cslib From 31979534a5a1cd4096f51883756d5144c18a227f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Mon, 20 Jul 2026 13:54:02 +0000 Subject: [PATCH 07/12] adjusts lemma 6.2 to be more general using actual permutations --- .../Named/Untyped/SwapProperties.lean | 199 +++++++++++------- 1 file changed, 122 insertions(+), 77 deletions(-) diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean index 7ccd381ac..cb7ae4476 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean @@ -41,7 +41,6 @@ variable {Var : Type u} [DecidableEq Var] namespace LambdaCalculus.Named.Untyped.Term --- TODO explicit usage? def agreementSet (f g : Var → Var) : Set Var := { x | f x = g x } def disagreementSet (f g : Var → Var) : Set Var := { x | f x ≠ g x } @@ -186,7 +185,7 @@ lemma not_mem_swap_target {m : Term Var} {u v : Var} (hu : u ∉ m.vars) : rw [swap_vars hu] grind --- First 4 case examination +-- First 4 case examination of example 1 lemma desired_condition_cases_z_ne_u_or_v {E E' : Term Var} {a b u v z : Var} (hm1 : z ∉ E.vars ∪ E'.vars ∪ {a, b}) (h2 : ((E.rename a z).swap u v) =α ((E'.rename b z).swap u v)) @@ -320,6 +319,7 @@ lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : have h3 : a = u ∨ a = v ∨ (a ≠ u ∧ a ≠ v) := by grind have h4 : b = u ∨ b = v ∨ (b ≠ u ∧ b ≠ v) := by grind have h5 : z = u ∨ z = v ∨ (z ≠ u ∧ z ≠ v) := by grind + -- we've got 27 cases to consider rcases h3 with ha | ha | ⟨hau, hav⟩ · rcases h4 with hb | hb | ⟨hbu, hbv⟩ · rcases h5 with hz | hz | ⟨hzu, hzv⟩ @@ -413,82 +413,127 @@ lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv | app hm1 hm2 ih1 ih2 => exact AlphaEquiv.app ih1 ih2 --- TODO part 1 -/-! ### Lemma 6.2 part 2 (α-equivalence version) -/ - -/-- Helper: if `y1 ∉ fv(m)` and `y2 ∉ fv(m)`, there exists `m'` α-equivalent to `m` -with both `y1 ∉ vars(m')` and `y2 ∉ vars(m')`. -/ -lemma exists_alphaEquiv_not_mem_vars_pair {m : Term Var} {y1 y2 : Var} - (h1 : y1 ∉ m.fv) (h2 : y2 ∉ m.fv) : - ∃ m', m =α m' ∧ y1 ∉ m'.vars ∧ y2 ∉ m'.vars := by - -- Step 1: Rename y1 to a fresh variable, avoiding both y1 and y2. - let f1 := HasFresh.fresh (m.vars ∪ {y1, y2}) - have hf1 : f1 ∉ m.vars ∪ {y1, y2} := HasFresh.fresh_notMem _ - let m1 := m.rename y1 f1 - have hf1_ne_y1 : f1 ≠ y1 := by intro h; exact hf1 (by simp [h]) - have hf1_ne_y2 : f1 ≠ y2 := by intro h; exact hf1 (by simp [h]) - have hf1_vars : f1 ∉ m.vars := by intro h; exact hf1 (Finset.mem_union_left _ h) - have hm1_alpha : m =α m1 := AlphaEquiv.rename_non_fv h1 hf1_vars - have hy1_m1 : y1 ∉ m1.vars := rename_remove hf1_ne_y1.symm - -- y2 ∉ fv(m1) since fv is preserved by α-equivalence. - have hy2_fv_m1 : y2 ∉ m1.fv := - AlphaEquiv.same_fv hm1_alpha ▸ h2 - -- Step 2: Rename y2 to a fresh variable, avoiding both y1 and y2. - let f2 := HasFresh.fresh (m1.vars ∪ {y1, y2}) - have hf2 : f2 ∉ m1.vars ∪ {y1, y2} := HasFresh.fresh_notMem _ - let m2 := m1.rename y2 f2 - have hf2_ne_y1 : f2 ≠ y1 := by intro h; exact hf2 (by simp [h]) - have hf2_ne_y2 : f2 ≠ y2 := by intro h; exact hf2 (by simp [h]) - have hf2_vars : f2 ∉ m1.vars := by intro h; exact hf2 (Finset.mem_union_left _ h) - have hm2_alpha : m1 =α m2 := AlphaEquiv.rename_non_fv hy2_fv_m1 hf2_vars - have hy2_m2 : y2 ∉ m2.vars := rename_remove hf2_ne_y2.symm - -- y1 ∉ vars(m2): by rename_vars, vars(m2) ⊆ (vars(m1) \ {y2}) ∪ {f2}. - -- Since y1 ∉ vars(m1) and f2 ≠ y1, we conclude y1 ∉ vars(m2). - have hy1_m2 : y1 ∉ m2.vars := by - simp only [m2, rename_vars, Finset.mem_union, Finset.mem_sdiff, - Finset.mem_singleton] - intro h - cases h with - | inl h => exact hy1_m1 h.1 - | inr h => split_ifs at h <;> simp_all [Ne.symm hf2_ne_y1] - exact ⟨m2, AlphaEquiv.trans hm1_alpha hm2_alpha, hy1_m2, hy2_m2⟩ - -/-- **Lemma 6.2 part 2** [Crole2012] (specialized): If two composed transpositions -agree on all free variables, their actions are α-equivalent. - -Specialized form: if `u, z ∉ fv(m)`, then `(m.swap u a).swap z u =α m.swap z a`. - -This follows from the general statement of Lemma 6.2 part 2: since `u, z # E` (i.e., -`u, z ∉ free(E)`), we have `free(E) ⊆ AS((z u) ∘ (u a), (z a))`, and therefore -`(z u) · (u a) · E ∼p (z a) · E`. - -The agreement set computation is: for any `x ∈ free(E)`, since `x ≠ u` and `x ≠ z`, -we have `swapVar z u (swapVar u a x) = swapVar z a x` -(by `swap_comp_eq_swap_of_not_eq`). - -The proof reduces to Lemma 6.2 part 1 via `exists_alphaEquiv_not_mem_vars_pair` -and `AlphaEquiv.swap_preserve`. -/ +/-- The action `π · E` of a permutation on a term, as used in [Crole2012]. + +`swap` is is one special case of a permutation: the transposition that exchanges exactly two atoms +a and b and fixes everything else. + +Since some lemmas in section 6 are proven for general permutations, we have to introduce +this notion here aswell and derive the special case using `swap` accordingly. +-/ +def permute (m : Term Var) (π : Equiv.Perm Var) : Term Var := + match m with + | var x => var (π x) + | abs x m => abs (π x) (m.permute π) + | app m n => app (m.permute π) (n.permute π) + +omit [HasFresh Var] in +/-- Permuting a term transports its free variables pointwise. -/ +lemma permute_fv (m : Term Var) (π : Equiv.Perm Var) : + (m.permute π).fv = m.fv.image π := by + induction m with + | var x => simp [permute, fv] + | app m n ihm ihn => simp [permute, fv, ihm, ihn, Finset.image_union] + | abs x m ih => + simp only [permute, fv, ih] + rw [Finset.image_sdiff _ _ π.injective] + simp + +omit [DecidableEq Var] [HasFresh Var] in +/-- Permuting successively by `π` and `π'` is permutation by their composition. -/ +lemma permute_trans (m : Term Var) (π π' : Equiv.Perm Var) : + (m.permute π).permute π' = m.permute (π.trans π') := by + induction m <;> simp_all [permute] + +omit [HasFresh Var] in +/-- A transposition acts on terms in the same way as `Term.swap`. -/ +lemma permute_swap (m : Term Var) (x y : Var) : m.permute (Equiv.swap x y) = m.swap x y := by + induction m <;> simp_all [permute, swap, Equiv.swap_apply_def] + +omit [HasFresh Var] in +/-- **Lemma 6.2 part 1** [Crole2012]. For any expression `E` and permutations `π, π'`, +if `occ(E) ⊆ AS(π, π')`, then `π · E = π' · E`. -/ +lemma permute_eq_of_vars_subset_agreementSet (m : Term Var) (π π' : Equiv.Perm Var) + (h : (m.vars : Set Var) ⊆ agreementSet π π') : + m.permute π = m.permute π' := by + induction m with + | var x => simpa [permute, vars, agreementSet] using h (by simp [vars]) + | abs x m ih => + have hx : π x = π' x := h (by simp [vars]) + have hm : m.permute π = m.permute π' := ih fun y hy => h (by simp [vars, hy]) + simp [permute, hx, hm] + | app m n ihm ihn => + have hm : m.permute π = m.permute π' := ihm fun y hy => h (by simp [vars, hy]) + have hn : n.permute π = n.permute π' := ihn fun y hy => h (by simp [vars, hy]) + simp [permute, hm, hn] + +/-- **Lemma 6.2 part 2** [Crole2012]. -/ +lemma permute_alphaEquiv_of_fv_subset_agreementSet (m : Term Var) (π π' : Equiv.Perm Var) + (h : (m.fv : Set Var) ⊆ agreementSet π π') : + (m.permute π) =α (m.permute π') := by + induction m generalizing π π' with + | var x => + have hx : π x = π' x := by apply h (by simp [fv]) + simpa [permute, hx] using (AlphaEquiv.var (x := π x)) + | app m n ihm ihn => + apply AlphaEquiv.app + · apply ihm + intro x hx + exact h (by simp [fv, hx]) + · apply ihn + intro x hx + exact h (by simp [fv, hx]) + | abs a m ih => + let z := HasFresh.fresh ((m.permute π).vars ∪ (m.permute π').vars ∪ {π a, π' a}) + have hz := HasFresh.fresh_notMem + ((m.permute π).vars ∪ (m.permute π').vars ∪ {π a, π' a}) + have hzπ : z ∉ (m.permute π).vars := by simp_all [z] + have hzπ' : z ∉ (m.permute π').vars := by simp_all [z] + have hbody : + (m.permute (π.trans (Equiv.swap (π a) z))) =α + (m.permute (π'.trans (Equiv.swap (π' a) z))) := by + apply ih + intro x hx + simp only [agreementSet, Set.mem_setOf_eq, Equiv.trans_apply] + by_cases hxa : x = a + · subst x + simp + · have hagree : π x = π' x := h (by simp [fv, hx, hxa]) + have hπxa : π x ≠ π a := fun he => hxa (π.injective he) + have hπ'xa : π' x ≠ π' a := fun he => hxa (π'.injective he) + have hπ'xπa : π' x ≠ π a := by simpa [hagree] using hπxa + have hπxz : π x ≠ z := by + intro he + apply hzπ + rw [← he, vars_either_fv_or_bv] + apply Finset.mem_union_left + rw [permute_fv] + exact Finset.mem_image.mpr ⟨x, hx, rfl⟩ + have hπ'xz : π' x ≠ z := by simpa [hagree] using hπxz + simp [Equiv.swap_apply_def, hπ'xa, hπ'xπa, hπ'xz, hagree] + rw [← permute_trans, ← permute_trans] at hbody + rw [permute_swap, permute_swap, + swap_eq_rename_of_not_mem_vars hzπ, swap_eq_rename_of_not_mem_vars hzπ'] at hbody + simp only [permute] + apply AlphaEquiv.abs (y := z) + · simpa [z] using hz + · exact hbody + +/-- **Lemma 6.2 part 2** [Crole2012] (specialized). -/ lemma swap_comp_alphaEquiv_of_not_mem_fv {m : Term Var} {a u z : Var} - (hu : u ∉ m.fv) (hz : z ∉ m.fv) : - ((m.swap u a).swap z u) =α (m.swap z a) := by - -- By exists_alphaEquiv_not_mem_vars_pair, get m' with m =α m' and - -- u, z ∉ vars(m'). - obtain ⟨m', hm', hm'u, hm'z⟩ := exists_alphaEquiv_not_mem_vars_pair hu hz - -- By Lemma 6.2 part 1 (swap_comp_eq_of_not_mem_vars): - -- (m'.swap u a).swap z u = m'.swap z a (syntactic equality!) - have h_eq : (m'.swap u a).swap z u = m'.swap z a := - swap_comp_eq_of_not_mem_vars hm'u hm'z - -- By Lemma 6.1 (swap_preserve) applied twice to m =α m': - have h1 : ((m.swap u a).swap z u) =α ((m'.swap u a).swap z u) := - AlphaEquiv.swap_preserve (AlphaEquiv.swap_preserve hm') - -- Rewrite using the syntactic equality: - rw [h_eq] at h1 - -- By Lemma 6.1 (swap_preserve) applied to the symmetric direction: - have h2 : (m'.swap z a) =α (m.swap z a) := - AlphaEquiv.swap_preserve (AlphaEquiv.symm hm') - -- Chain: (m.swap u a).swap z u =α (m'.swap u a).swap z u - -- = m'.swap z a =α m.swap z a - exact AlphaEquiv.trans h1 h2 + (hu : u ∉ m.fv) (hz : z ∉ m.fv) : + ((m.swap u a).swap z u) =α (m.swap z a) := by + let π := (Equiv.swap u a).trans (Equiv.swap z u) + let π' := Equiv.swap z a + have h : (m.fv : Set Var) ⊆ agreementSet π π' := by + intro x hx + simp only [agreementSet, Set.mem_setOf_eq] + have hxu : x ≠ u := by intro hxu; subst x; exact hu hx + have hxz : x ≠ z := by intro hxz; subst x; exact hz hx + grind + have h' := permute_alphaEquiv_of_fv_subset_agreementSet m π π' h + rw [← permute_trans, permute_swap, permute_swap, permute_swap] at h' + exact h' end LambdaCalculus.Named.Untyped.Term From d8a4a6847cf0064ae3bf11005260dcb54f7f3709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Mon, 20 Jul 2026 14:50:12 +0000 Subject: [PATCH 08/12] simplifies proof structures, moves major definitions into bundled file --- .../Named/Untyped/AlphaEquivDefs.lean | 15 + .../Named/Untyped/AlphaEquivEquiv.lean | 9 +- .../Named/Untyped/SwapProperties.lean | 287 +++++++++--------- 3 files changed, 154 insertions(+), 157 deletions(-) diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean index be4218dac..454161056 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean @@ -43,6 +43,7 @@ abstract syntax and the λ-calculus terms: | `B([a]E)` | `Term.abs x m` | | `(z a) · E` | `m.swap x z` | | `E{a'/a}` | `m.subst a (var a')`| +| `π · E` | `m.permute π` | -/ @@ -65,6 +66,20 @@ def swap (m : Term Var) (x y : Var) : Term Var := | abs z m' => abs (if z = x then y else if z = y then x else z) (m'.swap x y) | app n1 n2 => app (n1.swap x y) (n2.swap x y) +/-- The action `π · E` of a permutation on a term, as used in [Crole2012]. + +`swap` is is one special case of a permutation: the transposition that exchanges exactly two atoms +a and b and fixes everything else. + +Since some lemmas in section 6 are proven for general permutations, we have to introduce +this notion here aswell and derive the special case using `swap` accordingly. +-/ +def permute (m : Term Var) (π : Equiv.Perm Var) : Term Var := + match m with + | var x => var (π x) + | abs x m => abs (π x) (m.permute π) + | app m n => app (m.permute π) (n.permute π) + /-- **Definition 3.2** [Crole2012]: `∼p#` - α-equivalence via permutation with freshness side condition. diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean index 144ee71cb..d1cd4f928 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean @@ -50,8 +50,7 @@ operation coincides with `rename` when the target variable does not occur in the See [Crole2012] proof of Theorem 4.1, first sentence: "It is trivial that ∼p is contained in ∼p#." -/ omit [HasFresh Var] in -lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : - AlphaEquiv m n → AlphaEquivPFresh m n := by +lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : AlphaEquiv m n → AlphaEquivPFresh m n := by intro h induction h with | var => constructor @@ -67,8 +66,7 @@ lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : | app h1 h2 ih1 ih2 => exact AlphaEquivPFresh.app ih1 ih2 /-! ## Direction ∼p# → ∼p (the interesting direction of Theorem 4.1) -/ -lemma alphaEquivPFresh_of_alphaEquiv {m n : Term Var} : - AlphaEquivPFresh m n → AlphaEquiv m n := by +lemma alphaEquivPFresh_of_alphaEquiv {m n : Term Var} : AlphaEquivPFresh m n → AlphaEquiv m n := by intro h induction h with | var => constructor @@ -115,8 +113,7 @@ lemma alphaEquivPFresh_of_alphaEquiv {m n : Term Var} : | app _ _ ih1 ih2 => exact AlphaEquiv.app ih1 ih2 /-! ## Theorem 4.1 [Crole2012] -/ -theorem alphaEquiv_iff_alphaEquivPFresh (m n : Term Var) : - AlphaEquiv m n ↔ AlphaEquivPFresh m n := +theorem alphaEquiv_iff_alphaEquivPFresh (m n : Term Var) : AlphaEquiv m n ↔ AlphaEquivPFresh m n := ⟨alphaEquiv_of_alphaEquivPFresh, alphaEquivPFresh_of_alphaEquiv⟩ /- diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean index cb7ae4476..7309fb386 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean @@ -52,80 +52,74 @@ lemma swap_comm {m : Term Var} {x y : Var} : m.swap x y = m.swap y x := by induction m <;> simp [swap] <;> grind @[simp] -lemma swap_involutive {m : Term Var} {x y : Var} : - (m.swap x y).swap x y = m := by - induction m <;> simp [swap] <;> grind +lemma swap_involutive {m : Term Var} {x y : Var} : (m.swap x y).swap x y = m := by + induction m <;> simp [swap] <;> grind @[simp] -lemma swap_preserves_sizeOf {m : Term Var} {x y : Var} : - sizeOf (m.swap x y) = sizeOf m := by - induction m <;> simp [swap] <;> grind +lemma swap_preserves_sizeOf {m : Term Var} {x y : Var} : sizeOf (m.swap x y) = sizeOf m := by + induction m <;> simp [swap] <;> grind @[simp] -lemma swap_unused {m : Term Var} {x y : Var} : - x ∉ m.vars → y ∉ m.vars → m.swap x y = m := by - induction m <;> grind [swap, vars] +lemma swap_unused {m : Term Var} {x y : Var} : x ∉ m.vars → y ∉ m.vars → m.swap x y = m := by + induction m <;> grind [swap, vars] /-- When `y ∉ m.vars`, `swap x y` and `rename x y` coincide. This is because `rename x y` only changes `x` to `y` (not `y` to `x`), and when `y` does not occur in `m`, swapping and renaming produce the same result. -/ lemma swap_eq_rename_of_not_mem_vars {m : Term Var} {x y : Var} - (hy : y ∉ m.vars) : m.swap x y = m.rename x y := by - induction m with - | var z => - unfold swap rename - grind [Term.vars] - | abs z m ih => - simp_all +decide [Term.swap, Term.rename, Term.vars] - grind - | app n1 n2 ih1 ih2 => - simp_all +decide [Term.swap, Term.rename, Term.vars] - -/-- The set of free variables after a swap. -/ -lemma swap_fv {m : Term Var} {x y : Var} : - (m.swap x y).fv = m.fv.image fun z => if z = x then y else if z = y then x else z := by + (hy : y ∉ m.vars) : m.swap x y = m.rename x y := by induction m with - | var z => aesop + | var z => + unfold swap rename + grind [Term.vars] | abs z m ih => - simp_all +decide [Term.swap, Term.fv, Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff] + simp_all +decide [Term.swap, Term.rename, Term.vars] grind - | app m n ih1 ih2 => - simp_all +decide only [Term.swap, Term.fv] - rw [Finset.image_union] + | app n1 n2 ih1 ih2 => + simp_all +decide [Term.swap, Term.rename, Term.vars] + +/-- The set of free variables after a swap. -/ +lemma swap_fv {m : Term Var} {x y : Var} : + (m.swap x y).fv = m.fv.image fun z => if z = x then y else if z = y then x else z := by + induction m with + | var z => aesop + | abs z m ih => + simp_all +decide [Term.swap, Term.fv, Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff] + grind + | app m n ih1 ih2 => + simp_all +decide only [Term.swap, Term.fv] + rw [Finset.image_union] /-- Swapping preserves non-membership in `fv`. -/ lemma fresh_swap {m : Term Var} {x y z : Var} (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.fv) : - z ∉ (m.swap x y).fv := by - rw [swap_fv] - grind + z ∉ (m.swap x y).fv := by + rw [swap_fv] + grind /-- The set of vars after a swap. -/ lemma swap_vars {m : Term Var} {x y z : Var} (hzm : z ∉ m.vars) : - (m.swap x y).vars = m.vars.image fun z => if z = x then y else if z = y then x else z := by - induction m with - | var w => aesop - | abs w m ih => simp_all +decide [Term.swap, Term.vars] - | app m n ih1 ih2 => - simp_all +decide only [Term.swap, Term.vars, Finset.image_union] - grind + (m.swap x y).vars = m.vars.image fun z => if z = x then y else if z = y then x else z := by + induction m with + | var w => aesop + | abs w m ih => simp_all +decide [Term.swap, Term.vars] + | app m n ih1 ih2 => + simp_all +decide only [Term.swap, Term.vars, Finset.image_union] + grind /-- Swapping preserves non-membership in `vars`. -/ lemma not_mem_vars_swap {m : Term Var} {x y z : Var} - (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.vars) : - z ∉ (m.swap x y).vars := by - rw [swap_vars hzm] - grind + (hzx : z ≠ x) (hzy : z ≠ y) (hzm : z ∉ m.vars) : z ∉ (m.swap x y).vars := by + rw [swap_vars hzm] + grind /-- Helper function: the action of the transposition `(u v)` on a single variable `z`. -/ @[simp] -def swapVar (u v z : Var) : Var := - if z = u then v else if z = v then u else z +def swapVar (u v z : Var) : Var := if z = u then v else if z = v then u else z /-- `swapVar` is a fixed point for variables outside `{u, v}`. -/ @[simp] -lemma swapVar_fixed {u v z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : - swapVar u v z = z := by simp_all +lemma swapVar_fixed {u v z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : swapVar u v z = z := by simp_all /-- `swapVar` is injective (permutations are bijections). -/ lemma swapVar_injective (u v : Var) : Function.Injective (swapVar u v) := by @@ -134,54 +128,53 @@ lemma swapVar_injective (u v : Var) : Function.Injective (swapVar u v) := by /-- `swap` and `rename` commute (modulo the permutation action on the variable arguments). -/ lemma swap_rename_comm {m : Term Var} {u v x y : Var} : - (m.swap u v).rename (swapVar u v x) (swapVar u v y) = (m.rename x y).swap u v := by - induction m with - | var z => - simp_all +decide [Term.swap, Term.rename, swapVar] - grind - | abs z m ih => - simp_all +decide [Term.swap, Term.rename, swapVar] - grind - | app m n ih1 ih2 => - simp_all +decide [Term.swap, Term.rename, swapVar] + (m.swap u v).rename (swapVar u v x) (swapVar u v y) = (m.rename x y).swap u v := by + induction m with + | var z => + simp_all +decide [Term.swap, Term.rename, swapVar] + grind + | abs z m ih => + simp_all +decide [Term.swap, Term.rename, swapVar] + grind + | app m n ih1 ih2 => + simp_all +decide [Term.swap, Term.rename, swapVar] lemma swap_rename_comm' {m : Term Var} {u v x z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : - (m.swap u v).rename (swapVar u v x) z = (m.rename x z).swap u v := by - rw [← @swap_rename_comm _ _ m u v x z] - simp_all + (m.swap u v).rename (swapVar u v x) z = (m.rename x z).swap u v := by + rw [← @swap_rename_comm _ _ m u v x z] + simp_all lemma swap_comp_eq_of_not_mem_vars {m : Term Var} {a u z : Var} - (hu : u ∉ m.vars) (hz : z ∉ m.vars) : - (m.swap u a).swap z u = m.swap z a := by - induction m - · simp_all +decide [Term.swap, Term.vars] - grind - · simp_all +decide [Term.swap, Term.vars] - grind - · simp_all +decide [Term.swap, Term.vars] + (hu : u ∉ m.vars) (hz : z ∉ m.vars) : + (m.swap u a).swap z u = m.swap z a := by + induction m + · simp_all +decide [Term.swap, Term.vars] + grind + · simp_all +decide [Term.swap, Term.vars] + grind + · simp_all +decide [Term.swap, Term.vars] /-- Pointwise version of the transposition-conjugation identity `(u v) ∘ (u a) = (v a) ∘ (u v)` for `a ∉ {u, v}` -/ lemma swapVar_conj {a u v w : Var} (huv : u ≠ v) (hau : a ≠ u) (hav : a ≠ v) : - swapVar v a (swapVar u v w) = swapVar u v (swapVar u a w) := by - unfold swapVar - grind + swapVar v a (swapVar u v w) = swapVar u v (swapVar u a w) := by + unfold swapVar + grind /-- Term-level conjugation identity: `(m.swap u v).swap v a = (m.swap u a).swap u v` when `a ∉ {u, v}`. Unlike `swap_comp_eq_of_not_mem_vars`, this holds unconditionally (no freshness needed). -/ lemma swap_comp_eq_of_ne {m : Term Var} {a u v : Var} (hau : a ≠ u) (hav : a ≠ v) : - (m.swap u v).swap v a = (m.swap u a).swap u v := by - induction m with - | var x => simp_all +decide [Term.swap]; grind - | app m n ihm ihn => simp [Term.swap, ihm, ihn] - | abs x m ih => simp [Term.swap, ih]; grind + (m.swap u v).swap v a = (m.swap u a).swap u v := by + induction m with + | var x => simp_all +decide [Term.swap]; grind + | app m n ihm ihn => simp [Term.swap, ihm, ihn] + | abs x m ih => simp [Term.swap, ih]; grind /-- If `u` is not among `m`'s variables, then `v` cannot appear in `m.swap u v` (the only way `v` could show up is as the image of `u`). -/ -lemma not_mem_swap_target {m : Term Var} {u v : Var} (hu : u ∉ m.vars) : - v ∉ (m.swap u v).vars := by +lemma not_mem_swap_target {m : Term Var} {u v : Var} (hu : u ∉ m.vars) : v ∉ (m.swap u v).vars := by rw [swap_vars hu] grind @@ -245,28 +238,28 @@ lemma alphaEquiv_swap_preserve_abs_fresh_z_eq_u {E E' : Term Var} {a b u v : Var -- example 3 lemma alphaEquiv_swap_preserve_abs_b_eq_u {E E' : Term Var} {a u v : Var} - (hm : v ∉ E.vars ∪ E'.vars ∪ {a}) - (hbody : ((E.rename a v).swap u v) =α ((E'.rename u v).swap u v)) - (hau : a ≠ u) (hav : a ≠ v) (huv : u ≠ v) : - ((Term.abs a E).swap u v) =α ((Term.abs u E').swap u v) := by - have hvE : v ∉ E.vars := by simp_all - have hvE' : v ∉ E'.vars := by simp_all - have huE : u ∉ (E.swap u v).vars := by rw [swap_comm]; exact not_mem_swap_target hvE - have huE' : u ∉ (E'.swap u v).vars := by rw [swap_comm]; exact not_mem_swap_target hvE' - have hL : (E.swap u v).rename a u = (E.rename a v).swap u v := by - have h := @swap_rename_comm _ _ E u v a v - simpa [swapVar, hau, hav, huv, huv.symm] using h - have hR : (E'.swap u v).rename v u = (E'.rename u v).swap u v := by - have h := @swap_rename_comm _ _ E' u v u v - simpa [swapVar, huv, huv.symm] using h - have hbody' : ((E.swap u v).rename a u) =α ((E'.swap u v).rename v u) := by - rw [hL, hR]; exact hbody - apply AlphaEquiv.abs (y := u) - · simp only [Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] - grind - · simp_all +decide only [Finset.union_singleton, Finset.mem_insert, Finset.mem_union, - or_self, or_false, ne_eq, reduceIte] - exact hbody + (hm : v ∉ E.vars ∪ E'.vars ∪ {a}) + (hbody : ((E.rename a v).swap u v) =α ((E'.rename u v).swap u v)) + (hau : a ≠ u) (hav : a ≠ v) (huv : u ≠ v) : + ((Term.abs a E).swap u v) =α ((Term.abs u E').swap u v) := by + have hvE : v ∉ E.vars := by simp_all + have hvE' : v ∉ E'.vars := by simp_all + have huE : u ∉ (E.swap u v).vars := by rw [swap_comm]; exact not_mem_swap_target hvE + have huE' : u ∉ (E'.swap u v).vars := by rw [swap_comm]; exact not_mem_swap_target hvE' + have hL : (E.swap u v).rename a u = (E.rename a v).swap u v := by + have h := @swap_rename_comm _ _ E u v a v + simpa [swapVar, hau, hav, huv, huv.symm] using h + have hR : (E'.swap u v).rename v u = (E'.rename u v).swap u v := by + have h := @swap_rename_comm _ _ E' u v u v + simpa [swapVar, huv, huv.symm] using h + have hbody' : ((E.swap u v).rename a u) =α ((E'.swap u v).rename v u) := by + rw [hL, hR]; exact hbody + apply AlphaEquiv.abs (y := u) + · simp only [Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] + grind + · simp_all +decide only [Finset.union_singleton, Finset.mem_insert, Finset.mem_union, + or_self, or_false, ne_eq, reduceIte] + exact hbody -- example 4 lemma alphaEquiv_swap_preserve_abs_a_eq_b_eq_u {E E' : Term Var} {u v : Var} @@ -296,12 +289,12 @@ lemma alphaEquiv_swap_preserve_abs_a_eq_b_eq_u {E E' : Term Var} {u v : Var} variable [HasFresh Var] lemma AlphaEquiv.abs_congr {m m' : Term Var} {x : Var} : - m =α m' → (Term.abs x m) =α (Term.abs x m') := by - intro h - obtain ⟨y, hy⟩ := HasFresh.fresh_exists (m.vars ∪ m'.vars ∪ {x}) - apply AlphaEquiv.abs (y := y) - · grind - · apply AlphaEquiv.rename_preserve <;> grind + m =α m' → (Term.abs x m) =α (Term.abs x m') := by + intro h + obtain ⟨y, hy⟩ := HasFresh.fresh_exists (m.vars ∪ m'.vars ∪ {x}) + apply AlphaEquiv.abs (y := y) + · grind + · apply AlphaEquiv.rename_preserve <;> grind /-- Lemma 6.1 [Crole2012]: Swap (transposition) preserves α-equivalence. -/ lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : @@ -413,20 +406,6 @@ lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv | app hm1 hm2 ih1 ih2 => exact AlphaEquiv.app ih1 ih2 -/-- The action `π · E` of a permutation on a term, as used in [Crole2012]. - -`swap` is is one special case of a permutation: the transposition that exchanges exactly two atoms -a and b and fixes everything else. - -Since some lemmas in section 6 are proven for general permutations, we have to introduce -this notion here aswell and derive the special case using `swap` accordingly. --/ -def permute (m : Term Var) (π : Equiv.Perm Var) : Term Var := - match m with - | var x => var (π x) - | abs x m => abs (π x) (m.permute π) - | app m n => app (m.permute π) (n.permute π) - omit [HasFresh Var] in /-- Permuting a term transports its free variables pointwise. -/ lemma permute_fv (m : Term Var) (π : Equiv.Perm Var) : @@ -448,11 +427,10 @@ lemma permute_trans (m : Term Var) (π π' : Equiv.Perm Var) : omit [HasFresh Var] in /-- A transposition acts on terms in the same way as `Term.swap`. -/ lemma permute_swap (m : Term Var) (x y : Var) : m.permute (Equiv.swap x y) = m.swap x y := by - induction m <;> simp_all [permute, swap, Equiv.swap_apply_def] + induction m <;> simp_all [permute, swap, Equiv.swap_apply_def] omit [HasFresh Var] in -/-- **Lemma 6.2 part 1** [Crole2012]. For any expression `E` and permutations `π, π'`, -if `occ(E) ⊆ AS(π, π')`, then `π · E = π' · E`. -/ +/-- **Lemma 6.2 part 1** [Crole2012]. -/ lemma permute_eq_of_vars_subset_agreementSet (m : Term Var) (π π' : Equiv.Perm Var) (h : (m.vars : Set Var) ⊆ agreementSet π π') : m.permute π = m.permute π' := by @@ -473,25 +451,36 @@ lemma permute_alphaEquiv_of_fv_subset_agreementSet (m : Term Var) (π π' : Equi (m.permute π) =α (m.permute π') := by induction m generalizing π π' with | var x => - have hx : π x = π' x := by apply h (by simp [fv]) - simpa [permute, hx] using (AlphaEquiv.var (x := π x)) + unfold permute + have hx : π x = π' x := by + unfold agreementSet at h + apply h + unfold fv + simp + rw [hx] + exact AlphaEquiv.var | app m n ihm ihn => - apply AlphaEquiv.app - · apply ihm - intro x hx - exact h (by simp [fv, hx]) - · apply ihn - intro x hx - exact h (by simp [fv, hx]) + have hm : (m.permute π).AlphaEquiv (m.permute π') := by + apply ihm + intro x hx + apply h + unfold fv + simp_all + have hn : (n.permute π).AlphaEquiv (n.permute π') := by + apply ihn + intro x hx + apply h + unfold fv + simp_all + apply AlphaEquiv.app hm hn | abs a m ih => - let z := HasFresh.fresh ((m.permute π).vars ∪ (m.permute π').vars ∪ {π a, π' a}) - have hz := HasFresh.fresh_notMem - ((m.permute π).vars ∪ (m.permute π').vars ∪ {π a, π' a}) - have hzπ : z ∉ (m.permute π).vars := by simp_all [z] - have hzπ' : z ∉ (m.permute π').vars := by simp_all [z] - have hbody : - (m.permute (π.trans (Equiv.swap (π a) z))) =α - (m.permute (π'.trans (Equiv.swap (π' a) z))) := by + let z := HasFresh.fresh ((m.permute π).vars ∪ (m.permute π').vars ∪ {π a, π' a}) + have hz := HasFresh.fresh_notMem ((m.permute π).vars ∪ (m.permute π').vars ∪ {π a, π' a}) + have hzπ : z ∉ (m.permute π).vars := by simp_all [z] + have hzπ' : z ∉ (m.permute π').vars := by simp_all [z] + have hbody : + (m.permute (π.trans (Equiv.swap (π a) z))) =α (m.permute (π'.trans (Equiv.swap (π' a) z))) + := by apply ih intro x hx simp only [agreementSet, Set.mem_setOf_eq, Equiv.trans_apply] @@ -511,13 +500,10 @@ lemma permute_alphaEquiv_of_fv_subset_agreementSet (m : Term Var) (π π' : Equi exact Finset.mem_image.mpr ⟨x, hx, rfl⟩ have hπ'xz : π' x ≠ z := by simpa [hagree] using hπxz simp [Equiv.swap_apply_def, hπ'xa, hπ'xπa, hπ'xz, hagree] - rw [← permute_trans, ← permute_trans] at hbody - rw [permute_swap, permute_swap, - swap_eq_rename_of_not_mem_vars hzπ, swap_eq_rename_of_not_mem_vars hzπ'] at hbody - simp only [permute] - apply AlphaEquiv.abs (y := z) - · simpa [z] using hz - · exact hbody + rw [← permute_trans, ← permute_trans, permute_swap, permute_swap] at hbody + rw [swap_eq_rename_of_not_mem_vars hzπ, swap_eq_rename_of_not_mem_vars hzπ'] at hbody + unfold permute + apply AlphaEquiv.abs (y := z) (by simp_all [z]) hbody /-- **Lemma 6.2 part 2** [Crole2012] (specialized). -/ lemma swap_comp_alphaEquiv_of_not_mem_fv {m : Term Var} {a u z : Var} @@ -526,11 +512,10 @@ lemma swap_comp_alphaEquiv_of_not_mem_fv {m : Term Var} {a u z : Var} let π := (Equiv.swap u a).trans (Equiv.swap z u) let π' := Equiv.swap z a have h : (m.fv : Set Var) ⊆ agreementSet π π' := by - intro x hx - simp only [agreementSet, Set.mem_setOf_eq] - have hxu : x ≠ u := by intro hxu; subst x; exact hu hx - have hxz : x ≠ z := by intro hxz; subst x; exact hz hx - grind + intro x hx + unfold agreementSet + rw [Set.mem_setOf_eq] + grind have h' := permute_alphaEquiv_of_fv_subset_agreementSet m π π' h rw [← permute_trans, permute_swap, permute_swap, permute_swap] at h' exact h' From 3a3fd8f85262d654276cac83ff8b392849096760 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Mon, 20 Jul 2026 14:56:44 +0000 Subject: [PATCH 09/12] removes paper from repo --- paper.pdf | Bin 423802 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 paper.pdf diff --git a/paper.pdf b/paper.pdf deleted file mode 100644 index 09d32c34bdb0747c48f117e58068decdfa46fe10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423802 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Ð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 O1shLj{(RLnYX2W6$FeX0 From ed8d98b854d38d202933fe08eedc540346e37d5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Tue, 21 Jul 2026 17:22:49 +0000 Subject: [PATCH 10/12] switches to mathlibs Equiv.swap to build coherent picture wrt permutations --- .../Named/Untyped/AlphaEquivDefs.lean | 19 ++-- .../Named/Untyped/AlphaEquivEquiv.lean | 3 +- .../Named/Untyped/SwapProperties.lean | 105 ++++++++---------- 3 files changed, 55 insertions(+), 72 deletions(-) diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean index 454161056..f47dae048 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean @@ -57,20 +57,9 @@ variable {Var : Type u} [DecidableEq Var] [HasFresh Var] namespace LambdaCalculus.Named.Untyped.Term -/-- The action of the transposition `(x y)` on a term: simultaneously swaps all occurrences -of `x` and `y`. Corresponds to `(x y) · E` in [Crole2012] (Section 2). --/ -def swap (m : Term Var) (x y : Var) : Term Var := - match m with - | var z => var (if z = x then y else if z = y then x else z) - | abs z m' => abs (if z = x then y else if z = y then x else z) (m'.swap x y) - | app n1 n2 => app (n1.swap x y) (n2.swap x y) /-- The action `π · E` of a permutation on a term, as used in [Crole2012]. -`swap` is is one special case of a permutation: the transposition that exchanges exactly two atoms -a and b and fixes everything else. - Since some lemmas in section 6 are proven for general permutations, we have to introduce this notion here aswell and derive the special case using `swap` accordingly. -/ @@ -80,6 +69,14 @@ def permute (m : Term Var) (π : Equiv.Perm Var) : Term Var := | abs x m => abs (π x) (m.permute π) | app m n => app (m.permute π) (n.permute π) +/-- The action of the transposition `(x y)` on a term: simultaneously swaps all occurrences +of `x` and `y`. Corresponds to `(x y) · E` in [Crole2012] (Section 2). + +`swap` is is one special case of a permutation: the transposition that exchanges exactly two atoms +a and b and fixes everything else. +-/ +def swap (m : Term Var) (x y : Var) : Term Var := m.permute (Equiv.swap x y) + /-- **Definition 3.2** [Crole2012]: `∼p#` - α-equivalence via permutation with freshness side condition. diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean index d1cd4f928..549033ea5 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean @@ -57,8 +57,7 @@ lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : AlphaEquiv m n → Alpha | abs z_h1 ih1 ih2 => rename_i x z x1 x2 m1 m2 have h1 : z ∉ ({x1, x2} : Finset Var) ∪ m1.fv ∪ m2.fv := by - rw [vars_either_fv_or_bv] at z_h1 - rw [vars_either_fv_or_bv] at z_h1 + repeat rw [vars_either_fv_or_bv] at z_h1 simp_all have h2 : AlphaEquivPFresh (m1.swap x1 z) (m2.swap x2 z) := by grind [swap_eq_rename_of_not_mem_vars] diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean index 7309fb386..e56fd75f7 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean @@ -8,6 +8,8 @@ module public import Cslib.Languages.LambdaCalculus.Named.Untyped.AlphaEquivDefs public import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties +public import Mathlib.Logic.Equiv.Basic + /-! # Properties of the swap (transposition) operation on lambda terms @@ -46,22 +48,23 @@ def disagreementSet (f g : Var → Var) : Set Var := { x | f x ≠ g x } @[simp] lemma swap_self {m : Term Var} {x : Var} : m.swap x x = m := by - induction m <;> simp [swap] <;> grind + induction m <;> simp_all [swap, permute] lemma swap_comm {m : Term Var} {x y : Var} : m.swap x y = m.swap y x := by - induction m <;> simp [swap] <;> grind + unfold swap + rw [Equiv.swap_comm] @[simp] lemma swap_involutive {m : Term Var} {x y : Var} : (m.swap x y).swap x y = m := by - induction m <;> simp [swap] <;> grind + induction m <;> simp_all [swap, permute] @[simp] lemma swap_preserves_sizeOf {m : Term Var} {x y : Var} : sizeOf (m.swap x y) = sizeOf m := by - induction m <;> simp [swap] <;> grind + induction m <;> simp_all [swap, permute] @[simp] lemma swap_unused {m : Term Var} {x y : Var} : x ∉ m.vars → y ∉ m.vars → m.swap x y = m := by - induction m <;> grind [swap, vars] + induction m <;> grind [swap, permute, vars] /-- When `y ∉ m.vars`, `swap x y` and `rename x y` coincide. @@ -72,12 +75,12 @@ lemma swap_eq_rename_of_not_mem_vars {m : Term Var} {x y : Var} induction m with | var z => unfold swap rename - grind [Term.vars] + grind [Term.vars, permute] | abs z m ih => - simp_all +decide [Term.swap, Term.rename, Term.vars] + simp_all +decide [Term.swap, Term.rename, Term.vars, permute] grind | app n1 n2 ih1 ih2 => - simp_all +decide [Term.swap, Term.rename, Term.vars] + simp_all +decide [Term.swap, Term.rename, Term.vars, permute] /-- The set of free variables after a swap. -/ lemma swap_fv {m : Term Var} {x y : Var} : @@ -85,10 +88,11 @@ lemma swap_fv {m : Term Var} {x y : Var} : induction m with | var z => aesop | abs z m ih => - simp_all +decide [Term.swap, Term.fv, Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff] + simp_all +decide + [Term.swap, Term.fv, Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff, permute] grind | app m n ih1 ih2 => - simp_all +decide only [Term.swap, Term.fv] + simp_all +decide only [Term.swap, Term.fv, permute] rw [Finset.image_union] /-- Swapping preserves non-membership in `fv`. -/ @@ -102,9 +106,9 @@ lemma swap_vars {m : Term Var} {x y z : Var} (hzm : z ∉ m.vars) : (m.swap x y).vars = m.vars.image fun z => if z = x then y else if z = y then x else z := by induction m with | var w => aesop - | abs w m ih => simp_all +decide [Term.swap, Term.vars] + | abs w m ih => simp_all +decide [Term.swap, Term.vars, permute]; grind | app m n ih1 ih2 => - simp_all +decide only [Term.swap, Term.vars, Finset.image_union] + simp_all +decide only [Term.swap, Term.vars, Finset.image_union, permute] grind /-- Swapping preserves non-membership in `vars`. -/ @@ -113,53 +117,34 @@ lemma not_mem_vars_swap {m : Term Var} {x y z : Var} rw [swap_vars hzm] grind -/-- Helper function: the action of the transposition `(u v)` on a single variable `z`. -/ -@[simp] -def swapVar (u v z : Var) : Var := if z = u then v else if z = v then u else z - -/-- `swapVar` is a fixed point for variables outside `{u, v}`. -/ -@[simp] -lemma swapVar_fixed {u v z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : swapVar u v z = z := by simp_all - -/-- `swapVar` is injective (permutations are bijections). -/ -lemma swapVar_injective (u v : Var) : Function.Injective (swapVar u v) := by - unfold Function.Injective - aesop - /-- `swap` and `rename` commute (modulo the permutation action on the variable arguments). -/ lemma swap_rename_comm {m : Term Var} {u v x y : Var} : - (m.swap u v).rename (swapVar u v x) (swapVar u v y) = (m.rename x y).swap u v := by + (m.swap u v).rename (Equiv.swap u v x) (Equiv.swap u v y) = (m.rename x y).swap u v := by induction m with | var z => - simp_all +decide [Term.swap, Term.rename, swapVar] + simp_all +decide [Term.swap, Term.rename, permute] grind | abs z m ih => - simp_all +decide [Term.swap, Term.rename, swapVar] + simp_all +decide [Term.swap, Term.rename, permute] grind | app m n ih1 ih2 => - simp_all +decide [Term.swap, Term.rename, swapVar] + simp_all +decide [Term.swap, Term.rename, permute] lemma swap_rename_comm' {m : Term Var} {u v x z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : - (m.swap u v).rename (swapVar u v x) z = (m.rename x z).swap u v := by + (m.swap u v).rename (Equiv.swap u v x) z = (m.rename x z).swap u v := by rw [← @swap_rename_comm _ _ m u v x z] simp_all + grind lemma swap_comp_eq_of_not_mem_vars {m : Term Var} {a u z : Var} (hu : u ∉ m.vars) (hz : z ∉ m.vars) : (m.swap u a).swap z u = m.swap z a := by induction m - · simp_all +decide [Term.swap, Term.vars] + · simp_all +decide [Term.swap, Term.vars, permute] grind - · simp_all +decide [Term.swap, Term.vars] + · simp_all +decide [Term.swap, Term.vars, permute] grind - · simp_all +decide [Term.swap, Term.vars] - -/-- Pointwise version of the transposition-conjugation identity -`(u v) ∘ (u a) = (v a) ∘ (u v)` for `a ∉ {u, v}` -/ -lemma swapVar_conj {a u v w : Var} (huv : u ≠ v) (hau : a ≠ u) (hav : a ≠ v) : - swapVar v a (swapVar u v w) = swapVar u v (swapVar u a w) := by - unfold swapVar - grind + · simp_all +decide [Term.swap, Term.vars, permute] /-- Term-level conjugation identity: `(m.swap u v).swap v a = (m.swap u a).swap u v` when `a ∉ {u, v}`. @@ -168,9 +153,9 @@ Unlike `swap_comp_eq_of_not_mem_vars`, this holds unconditionally (no freshness lemma swap_comp_eq_of_ne {m : Term Var} {a u v : Var} (hau : a ≠ u) (hav : a ≠ v) : (m.swap u v).swap v a = (m.swap u a).swap u v := by induction m with - | var x => simp_all +decide [Term.swap]; grind - | app m n ihm ihn => simp [Term.swap, ihm, ihn] - | abs x m ih => simp [Term.swap, ih]; grind + | var x => simp_all [Term.swap, permute]; grind + | app m n ihm ihn => simp_all [Term.swap, permute] + | abs x m ih => simp_all [Term.swap, permute]; grind /-- If `u` is not among `m`'s variables, then `v` cannot appear in `m.swap u v` (the only way `v` could show up is as the image of `u`). -/ @@ -184,7 +169,7 @@ lemma desired_condition_cases_z_ne_u_or_v {E E' : Term Var} {a b u v z : Var} (h2 : ((E.rename a z).swap u v) =α ((E'.rename b z).swap u v)) (hzu : z ≠ u) (hzv : z ≠ v) - : ((E.swap u v).swap (swapVar u v a) z) =α ((E'.swap u v).swap (swapVar u v b) z) := by + : ((E.swap u v).swap (Equiv.swap u v a) z) =α ((E'.swap u v).swap (Equiv.swap u v b) z) := by have hzb : z ≠ b := by simp_all have hza : z ≠ a := by simp_all have z_h1 : z ∉ (E.swap u v).vars := by exact not_mem_vars_swap hzu hzv (by simp_all) @@ -193,7 +178,6 @@ lemma desired_condition_cases_z_ne_u_or_v {E E' : Term Var} {a b u v z : Var} rw [swap_eq_rename_of_not_mem_vars z_h2] rw [← swap_rename_comm' (by grind) (by grind)] at h2 rw [← swap_rename_comm' (by grind) (by grind)] at h2 - unfold swapVar at h2 have ha : a = u ∨ a = v ∨ (a ≠ u ∧ a ≠ v) := by grind have hb : b = u ∨ b = v ∨ (b ≠ u ∧ b ≠ v) := by grind rcases ha with h' | h' | ⟨hau, hav⟩ @@ -213,9 +197,9 @@ lemma alphaEquiv_swap_preserve_abs_fresh {E E' : Term Var} {a b u v z : Var} rw [swap_eq_rename_of_not_mem_vars hzE, swap_eq_rename_of_not_mem_vars hzE'] at hren simp only [Term.swap] apply AlphaEquiv.abs (y := z) - · simp only [Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] + · simp_all +decide [Finset.mem_union, Finset.mem_insert, swap] grind - · simpa [swapVar] using hren + · simpa using hren -- example 2: use v as witness lemma alphaEquiv_swap_preserve_abs_fresh_z_eq_u {E E' : Term Var} {a b u v : Var} @@ -234,7 +218,7 @@ lemma alphaEquiv_swap_preserve_abs_fresh_z_eq_u {E E' : Term Var} {a b u v : Var have hvE' : v ∉ (E'.swap u v).vars := not_mem_swap_target huE' rw [swap_eq_rename_of_not_mem_vars hvE, swap_eq_rename_of_not_mem_vars hvE'] at hbody simp only [Term.swap] - apply AlphaEquiv.abs (y := v) <;> (simp_all +decide; grind) + apply AlphaEquiv.abs (y := v) <;> (simp_all +decide [swap]; grind) -- example 3 lemma alphaEquiv_swap_preserve_abs_b_eq_u {E E' : Term Var} {a u v : Var} @@ -248,18 +232,18 @@ lemma alphaEquiv_swap_preserve_abs_b_eq_u {E E' : Term Var} {a u v : Var} have huE' : u ∉ (E'.swap u v).vars := by rw [swap_comm]; exact not_mem_swap_target hvE' have hL : (E.swap u v).rename a u = (E.rename a v).swap u v := by have h := @swap_rename_comm _ _ E u v a v - simpa [swapVar, hau, hav, huv, huv.symm] using h + simp_all +decide + grind have hR : (E'.swap u v).rename v u = (E'.rename u v).swap u v := by have h := @swap_rename_comm _ _ E' u v u v - simpa [swapVar, huv, huv.symm] using h + simpa [huv, huv.symm] using h have hbody' : ((E.swap u v).rename a u) =α ((E'.swap u v).rename v u) := by rw [hL, hR]; exact hbody apply AlphaEquiv.abs (y := u) - · simp only [Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] + · simp_all [Finset.mem_union, Finset.mem_insert, swap] + grind + · simp_all +decide [swap] grind - · simp_all +decide only [Finset.union_singleton, Finset.mem_insert, Finset.mem_union, - or_self, or_false, ne_eq, reduceIte] - exact hbody -- example 4 lemma alphaEquiv_swap_preserve_abs_a_eq_b_eq_u {E E' : Term Var} {u v : Var} @@ -279,11 +263,14 @@ lemma alphaEquiv_swap_preserve_abs_a_eq_b_eq_u {E E' : Term Var} {u v : Var} rw [swap_comm] at h exact h apply AlphaEquiv.abs (y := u) - · simp only [Finset.mem_union, Finset.mem_insert, Finset.mem_singleton] - grind - · rw [← swap_eq_rename_of_not_mem_vars huE, ← swap_eq_rename_of_not_mem_vars huE'] - simp_all +decide only [Finset.union_singleton, Finset.mem_insert, Finset.mem_union, or_self, - reduceIte, swap_comm, swap_involutive] + · simp_all +decide [swap] + · simp only [Equiv.swap_apply_left] + change ((E.swap u v).rename v u) =α ((E'.swap u v).rename v u) + rw [← swap_eq_rename_of_not_mem_vars (m := E.swap u v) (x := v) (y := u) huE] + rw [← swap_eq_rename_of_not_mem_vars (m := E'.swap u v) (x := v) (y := u) huE'] + nth_rw 2 [swap_comm] + nth_rw 4 [swap_comm] + rw [swap_involutive, swap_involutive] exact ih variable [HasFresh Var] From fc711a7058ee7179a5abde01ce8827ec92afbc18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Wed, 22 Jul 2026 07:47:39 +0000 Subject: [PATCH 11/12] simplifies minor proof notions --- .../Named/Untyped/AlphaEquivDefs.lean | 1 - .../Named/Untyped/AlphaEquivEquiv.lean | 30 ++-- .../Named/Untyped/SwapProperties.lean | 128 +++++++++--------- 3 files changed, 69 insertions(+), 90 deletions(-) diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean index f47dae048..4de0bab5e 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivDefs.lean @@ -57,7 +57,6 @@ variable {Var : Type u} [DecidableEq Var] [HasFresh Var] namespace LambdaCalculus.Named.Untyped.Term - /-- The action `π · E` of a permutation on a term, as used in [Crole2012]. Since some lemmas in section 6 are proven for general permutations, we have to introduce diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean index 549033ea5..6369289ad 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/AlphaEquivEquiv.lean @@ -42,14 +42,10 @@ variable {Var : Type u} [DecidableEq Var] [HasFresh Var] namespace LambdaCalculus.Named.Untyped.Term -/-! ## Direction ∼p → ∼p# - -Non-occurrence (`y ∉ vars(m)`) obviously implies freshness (`y ∉ fv(m)`), and the `swap` -operation coincides with `rename` when the target variable does not occur in the term. - -See [Crole2012] proof of Theorem 4.1, first sentence: "It is trivial that ∼p is contained in ∼p#." --/ omit [HasFresh Var] in +/-- Non-occurrence obviously implies freshness, and the `swap` operation coincides with +`rename` when the target variable does not occur in the term. +-/ lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : AlphaEquiv m n → AlphaEquivPFresh m n := by intro h induction h with @@ -57,14 +53,12 @@ lemma alphaEquiv_of_alphaEquivPFresh {m n : Term Var} : AlphaEquiv m n → Alpha | abs z_h1 ih1 ih2 => rename_i x z x1 x2 m1 m2 have h1 : z ∉ ({x1, x2} : Finset Var) ∪ m1.fv ∪ m2.fv := by - repeat rw [vars_either_fv_or_bv] at z_h1 - simp_all + simp_all [vars_either_fv_or_bv] have h2 : AlphaEquivPFresh (m1.swap x1 z) (m2.swap x2 z) := by grind [swap_eq_rename_of_not_mem_vars] apply AlphaEquivPFresh.abs h1 h2 | app h1 h2 ih1 ih2 => exact AlphaEquivPFresh.app ih1 ih2 -/-! ## Direction ∼p# → ∼p (the interesting direction of Theorem 4.1) -/ lemma alphaEquivPFresh_of_alphaEquiv {m n : Term Var} : AlphaEquivPFresh m n → AlphaEquiv m n := by intro h induction h with @@ -73,27 +67,19 @@ lemma alphaEquivPFresh_of_alphaEquiv {m n : Term Var} : AlphaEquivPFresh m n → rename_i u a b E E' -- We have: (u a) · E ∼p (u b) · E' (by induction: ih) and u # a, b, E, E' (by hy). -- Extract freshness conditions from hy. - have hu_a : u ≠ a := by aesop - have hu_b : u ≠ b := by aesop have hu_E : u ∉ E.fv := by aesop have hu_E' : u ∉ E'.fv := by aesop -- Pick z ≠ u with z ∉ vars(E) ∪ vars(E') ∪ {a, b} (stronger than freshness). obtain ⟨z, hz⟩ : ∃ z : Var, z ∉ E.vars ∪ E'.vars ∪ {a, b, u} := by exact Infinite.exists_notMem_finset (E.vars ∪ E'.vars ∪ {a, b, u}) - have hz_a : z ≠ a := by aesop - have hz_b : z ≠ b := by aesop - have hz_u : z ≠ u := by aesop have hz_E : z ∉ E.vars := by aesop have hz_E' : z ∉ E'.vars := by aesop - have hz_fv_E : z ∉ E.fv := by - have : E.vars = E.fv ∪ E.bv := vars_either_fv_or_bv - aesop - have hz_fv_E' : z ∉ E'.fv := by - have : E'.vars = E'.fv ∪ E'.bv := vars_either_fv_or_bv - aesop + have hz_fv_E : z ∉ E.fv := by simp_all [vars_either_fv_or_bv] + have hz_fv_E' : z ∉ E'.fv := by simp_all [vars_either_fv_or_bv] -- Using Lemma 6.1 we get have h_swap : ((E.swap u a).swap z u) =α ((E'.swap u b).swap z u) := by - rw [@swap_comm (x := u) (y := a), swap_comm (x := u) (y := b)] + nth_rw 2 [swap_comm] + nth_rw 4 [swap_comm] exact AlphaEquiv.swap_preserve ih -- From Lemma 6.2 part 2 via agreement sets have h_agree_E : ((E.swap u a).swap z u) =α (E.swap z a) := diff --git a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean index e56fd75f7..565406419 100644 --- a/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean +++ b/Cslib/Languages/LambdaCalculus/Named/Untyped/SwapProperties.lean @@ -8,8 +8,6 @@ module public import Cslib.Languages.LambdaCalculus.Named.Untyped.AlphaEquivDefs public import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties -public import Mathlib.Logic.Equiv.Basic - /-! # Properties of the swap (transposition) operation on lambda terms @@ -77,10 +75,10 @@ lemma swap_eq_rename_of_not_mem_vars {m : Term Var} {x y : Var} unfold swap rename grind [Term.vars, permute] | abs z m ih => - simp_all +decide [Term.swap, Term.rename, Term.vars, permute] + simp_all [Term.swap, Term.rename, Term.vars, permute] grind | app n1 n2 ih1 ih2 => - simp_all +decide [Term.swap, Term.rename, Term.vars, permute] + simp_all [Term.swap, Term.rename, Term.vars, permute] /-- The set of free variables after a swap. -/ lemma swap_fv {m : Term Var} {x y : Var} : @@ -88,11 +86,10 @@ lemma swap_fv {m : Term Var} {x y : Var} : induction m with | var z => aesop | abs z m ih => - simp_all +decide - [Term.swap, Term.fv, Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff, permute] + simp_all [Term.swap, Term.fv, Finset.ext_iff, Finset.mem_image, Finset.mem_sdiff, permute] grind | app m n ih1 ih2 => - simp_all +decide only [Term.swap, Term.fv, permute] + simp_all only [Term.swap, Term.fv, permute] rw [Finset.image_union] /-- Swapping preserves non-membership in `fv`. -/ @@ -106,9 +103,9 @@ lemma swap_vars {m : Term Var} {x y z : Var} (hzm : z ∉ m.vars) : (m.swap x y).vars = m.vars.image fun z => if z = x then y else if z = y then x else z := by induction m with | var w => aesop - | abs w m ih => simp_all +decide [Term.swap, Term.vars, permute]; grind + | abs w m ih => simp_all [Term.swap, Term.vars, permute]; grind | app m n ih1 ih2 => - simp_all +decide only [Term.swap, Term.vars, Finset.image_union, permute] + simp_all only [Term.swap, Term.vars, Finset.image_union, permute] grind /-- Swapping preserves non-membership in `vars`. -/ @@ -122,13 +119,13 @@ lemma swap_rename_comm {m : Term Var} {u v x y : Var} : (m.swap u v).rename (Equiv.swap u v x) (Equiv.swap u v y) = (m.rename x y).swap u v := by induction m with | var z => - simp_all +decide [Term.swap, Term.rename, permute] + simp_all [Term.swap, Term.rename, permute] grind | abs z m ih => - simp_all +decide [Term.swap, Term.rename, permute] + simp_all [Term.swap, Term.rename, permute] grind | app m n ih1 ih2 => - simp_all +decide [Term.swap, Term.rename, permute] + simp_all [Term.swap, Term.rename, permute] lemma swap_rename_comm' {m : Term Var} {u v x z : Var} (hzu : z ≠ u) (hzv : z ≠ v) : (m.swap u v).rename (Equiv.swap u v x) z = (m.rename x z).swap u v := by @@ -140,11 +137,11 @@ lemma swap_comp_eq_of_not_mem_vars {m : Term Var} {a u z : Var} (hu : u ∉ m.vars) (hz : z ∉ m.vars) : (m.swap u a).swap z u = m.swap z a := by induction m - · simp_all +decide [Term.swap, Term.vars, permute] + · simp_all [Term.swap, Term.vars, permute] grind - · simp_all +decide [Term.swap, Term.vars, permute] + · simp_all [Term.swap, Term.vars, permute] grind - · simp_all +decide [Term.swap, Term.vars, permute] + · simp_all [Term.swap, Term.vars, permute] /-- Term-level conjugation identity: `(m.swap u v).swap v a = (m.swap u a).swap u v` when `a ∉ {u, v}`. @@ -163,6 +160,27 @@ lemma not_mem_swap_target {m : Term Var} {u v : Var} (hu : u ∉ m.vars) : v ∉ rw [swap_vars hu] grind +/-- Permuting a term transports its free variables pointwise. -/ +lemma permute_fv (m : Term Var) (π : Equiv.Perm Var) : + (m.permute π).fv = m.fv.image π := by + induction m with + | var x => simp [permute, fv] + | app m n ihm ihn => simp [permute, fv, ihm, ihn, Finset.image_union] + | abs x m ih => + simp only [permute, fv, ih] + rw [Finset.image_sdiff _ _ π.injective] + simp + +omit [DecidableEq Var] in +/-- Permuting successively by `π` and `π'` is permutation by their composition. -/ +lemma permute_trans (m : Term Var) (π π' : Equiv.Perm Var) : + (m.permute π).permute π' = m.permute (π.trans π') := by + induction m <;> simp_all [permute] + +/-- A transposition acts on terms in the same way as `Term.swap`. -/ +lemma permute_swap (m : Term Var) (x y : Var) : m.permute (Equiv.swap x y) = m.swap x y := by + induction m <;> simp_all [permute, swap, Equiv.swap_apply_def] + -- First 4 case examination of example 1 lemma desired_condition_cases_z_ne_u_or_v {E E' : Term Var} {a b u v z : Var} (hm1 : z ∉ E.vars ∪ E'.vars ∪ {a, b}) @@ -181,9 +199,9 @@ lemma desired_condition_cases_z_ne_u_or_v {E E' : Term Var} {a b u v z : Var} have ha : a = u ∨ a = v ∨ (a ≠ u ∧ a ≠ v) := by grind have hb : b = u ∨ b = v ∨ (b ≠ u ∧ b ≠ v) := by grind rcases ha with h' | h' | ⟨hau, hav⟩ - · rcases hb with h'' | h'' | ⟨hbu, hbv⟩ <;> simp_all +decide - · rcases hb with h'' | h'' | ⟨hbu, hbv⟩ <;> simp_all +decide - · rcases hb with h'' | h'' | ⟨hbu, hbv⟩ <;> simp_all +decide + · rcases hb with h'' | h'' | ⟨hbu, hbv⟩ <;> simp_all + · rcases hb with h'' | h'' | ⟨hbu, hbv⟩ <;> simp_all + · rcases hb with h'' | h'' | ⟨hbu, hbv⟩ <;> simp_all -- example 1: use z as witness lemma alphaEquiv_swap_preserve_abs_fresh {E E' : Term Var} {a b u v z : Var} @@ -197,9 +215,9 @@ lemma alphaEquiv_swap_preserve_abs_fresh {E E' : Term Var} {a b u v z : Var} rw [swap_eq_rename_of_not_mem_vars hzE, swap_eq_rename_of_not_mem_vars hzE'] at hren simp only [Term.swap] apply AlphaEquiv.abs (y := z) - · simp_all +decide [Finset.mem_union, Finset.mem_insert, swap] + · simp_all [Finset.mem_union, Finset.mem_insert, swap] grind - · simpa using hren + · exact hren -- example 2: use v as witness lemma alphaEquiv_swap_preserve_abs_fresh_z_eq_u {E E' : Term Var} {a b u v : Var} @@ -212,13 +230,12 @@ lemma alphaEquiv_swap_preserve_abs_fresh_z_eq_u {E E' : Term Var} {a b u v : Var rw [← swap_eq_rename_of_not_mem_vars huE, ← swap_eq_rename_of_not_mem_vars huE'] at hbody rw [swap_comm (m := E) (x := a) (y := u), swap_comm (m := E') (x := b) (y := u)] at hbody rw [← swap_comp_eq_of_ne hau hav, ← swap_comp_eq_of_ne hbu hbv] at hbody - rw [swap_comm (m := E.swap u v) (x := v) (y := a), - swap_comm (m := E'.swap u v) (x := v) (y := b)] at hbody + rw [swap_comm (m := E.swap u v) (x := v) (y := a)] at hbody + rw [swap_comm (m := E'.swap u v) (x := v) (y := b)] at hbody have hvE : v ∉ (E.swap u v).vars := not_mem_swap_target huE have hvE' : v ∉ (E'.swap u v).vars := not_mem_swap_target huE' rw [swap_eq_rename_of_not_mem_vars hvE, swap_eq_rename_of_not_mem_vars hvE'] at hbody - simp only [Term.swap] - apply AlphaEquiv.abs (y := v) <;> (simp_all +decide [swap]; grind) + apply AlphaEquiv.abs (y := v) <;> (simp_all [swap]; grind) -- example 3 lemma alphaEquiv_swap_preserve_abs_b_eq_u {E E' : Term Var} {a u v : Var} @@ -232,17 +249,18 @@ lemma alphaEquiv_swap_preserve_abs_b_eq_u {E E' : Term Var} {a u v : Var} have huE' : u ∉ (E'.swap u v).vars := by rw [swap_comm]; exact not_mem_swap_target hvE' have hL : (E.swap u v).rename a u = (E.rename a v).swap u v := by have h := @swap_rename_comm _ _ E u v a v - simp_all +decide + simp_all grind have hR : (E'.swap u v).rename v u = (E'.rename u v).swap u v := by have h := @swap_rename_comm _ _ E' u v u v - simpa [huv, huv.symm] using h + simp_all have hbody' : ((E.swap u v).rename a u) =α ((E'.swap u v).rename v u) := by - rw [hL, hR]; exact hbody + rw [hL, hR] + exact hbody apply AlphaEquiv.abs (y := u) · simp_all [Finset.mem_union, Finset.mem_insert, swap] grind - · simp_all +decide [swap] + · simp_all [swap] grind -- example 4 @@ -263,7 +281,7 @@ lemma alphaEquiv_swap_preserve_abs_a_eq_b_eq_u {E E' : Term Var} {u v : Var} rw [swap_comm] at h exact h apply AlphaEquiv.abs (y := u) - · simp_all +decide [swap] + · simp_all [swap] · simp only [Equiv.swap_apply_left] change ((E.swap u v).rename v u) =α ((E'.swap u v).rename v u) rw [← swap_eq_rename_of_not_mem_vars (m := E.swap u v) (x := v) (y := u) huE] @@ -291,7 +309,7 @@ lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : · simp_all · change u ≠ v at h2 induction h1 with - | var => simp_all +decide [AlphaEquiv.refl] + | var => simp_all [AlphaEquiv.refl] | abs hm1 hm2 ih => rename_i z a b E E' have z_h1 : z ≠ a := by simp_all @@ -393,44 +411,21 @@ lemma AlphaEquiv.swap_preserve {m m' : Term Var} {u v : Var} : · exact alphaEquiv_swap_preserve_abs_fresh hm1 ih hzu hzv | app hm1 hm2 ih1 ih2 => exact AlphaEquiv.app ih1 ih2 -omit [HasFresh Var] in -/-- Permuting a term transports its free variables pointwise. -/ -lemma permute_fv (m : Term Var) (π : Equiv.Perm Var) : - (m.permute π).fv = m.fv.image π := by - induction m with - | var x => simp [permute, fv] - | app m n ihm ihn => simp [permute, fv, ihm, ihn, Finset.image_union] - | abs x m ih => - simp only [permute, fv, ih] - rw [Finset.image_sdiff _ _ π.injective] - simp - -omit [DecidableEq Var] [HasFresh Var] in -/-- Permuting successively by `π` and `π'` is permutation by their composition. -/ -lemma permute_trans (m : Term Var) (π π' : Equiv.Perm Var) : - (m.permute π).permute π' = m.permute (π.trans π') := by - induction m <;> simp_all [permute] - -omit [HasFresh Var] in -/-- A transposition acts on terms in the same way as `Term.swap`. -/ -lemma permute_swap (m : Term Var) (x y : Var) : m.permute (Equiv.swap x y) = m.swap x y := by - induction m <;> simp_all [permute, swap, Equiv.swap_apply_def] - omit [HasFresh Var] in /-- **Lemma 6.2 part 1** [Crole2012]. -/ lemma permute_eq_of_vars_subset_agreementSet (m : Term Var) (π π' : Equiv.Perm Var) (h : (m.vars : Set Var) ⊆ agreementSet π π') : m.permute π = m.permute π' := by induction m with - | var x => simpa [permute, vars, agreementSet] using h (by simp [vars]) + | var x => simp_all [permute, vars, agreementSet, vars] | abs x m ih => - have hx : π x = π' x := h (by simp [vars]) - have hm : m.permute π = m.permute π' := ih fun y hy => h (by simp [vars, hy]) - simp [permute, hx, hm] + have hx : π x = π' x := h (by simp [vars]) + have hm : m.permute π = m.permute π' := ih fun y hy => h (by simp [vars, hy]) + simp [permute, hx, hm] | app m n ihm ihn => - have hm : m.permute π = m.permute π' := ihm fun y hy => h (by simp [vars, hy]) - have hn : n.permute π = n.permute π' := ihn fun y hy => h (by simp [vars, hy]) - simp [permute, hm, hn] + have hm : m.permute π = m.permute π' := ihm fun y hy => h (by simp [vars, hy]) + have hn : n.permute π = n.permute π' := ihn fun y hy => h (by simp [vars, hy]) + simp [permute, hm, hn] /-- **Lemma 6.2 part 2** [Crole2012]. -/ lemma permute_alphaEquiv_of_fv_subset_agreementSet (m : Term Var) (π π' : Equiv.Perm Var) @@ -443,17 +438,17 @@ lemma permute_alphaEquiv_of_fv_subset_agreementSet (m : Term Var) (π π' : Equi unfold agreementSet at h apply h unfold fv - simp + rw [Finset.coe_singleton, Set.mem_singleton_iff] rw [hx] exact AlphaEquiv.var | app m n ihm ihn => - have hm : (m.permute π).AlphaEquiv (m.permute π') := by + have hm : (m.permute π) =α (m.permute π') := by apply ihm intro x hx apply h unfold fv simp_all - have hn : (n.permute π).AlphaEquiv (n.permute π') := by + have hn : (n.permute π) =α (n.permute π') := by apply ihn intro x hx apply h @@ -472,12 +467,11 @@ lemma permute_alphaEquiv_of_fv_subset_agreementSet (m : Term Var) (π π' : Equi intro x hx simp only [agreementSet, Set.mem_setOf_eq, Equiv.trans_apply] by_cases hxa : x = a - · subst x - simp + · simp_all · have hagree : π x = π' x := h (by simp [fv, hx, hxa]) have hπxa : π x ≠ π a := fun he => hxa (π.injective he) have hπ'xa : π' x ≠ π' a := fun he => hxa (π'.injective he) - have hπ'xπa : π' x ≠ π a := by simpa [hagree] using hπxa + have hπ'xπa : π' x ≠ π a := by simp_all have hπxz : π x ≠ z := by intro he apply hzπ @@ -485,7 +479,7 @@ lemma permute_alphaEquiv_of_fv_subset_agreementSet (m : Term Var) (π π' : Equi apply Finset.mem_union_left rw [permute_fv] exact Finset.mem_image.mpr ⟨x, hx, rfl⟩ - have hπ'xz : π' x ≠ z := by simpa [hagree] using hπxz + have hπ'xz : π' x ≠ z := by simp_all simp [Equiv.swap_apply_def, hπ'xa, hπ'xπa, hπ'xz, hagree] rw [← permute_trans, ← permute_trans, permute_swap, permute_swap] at hbody rw [swap_eq_rename_of_not_mem_vars hzπ, swap_eq_rename_of_not_mem_vars hzπ'] at hbody From 351b37e15066a016365e6ffe1606f5d46f532890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Anto=20Fr=C3=B6schl?= Date: Wed, 22 Jul 2026 08:24:05 +0000 Subject: [PATCH 12/12] runs lake exe mk_all --- Cslib.lean | 250 ++++++++++++++++++++++++------------------------ CslibTests.lean | 26 +++-- 2 files changed, 136 insertions(+), 140 deletions(-) diff --git a/Cslib.lean b/Cslib.lean index f899d0118..7e34ab53e 100644 --- a/Cslib.lean +++ b/Cslib.lean @@ -1,126 +1,124 @@ -module -- shake: keep-all - -public import Cslib.Algorithms.Lean.MergeSort.MergeSort -public import Cslib.Algorithms.Lean.TimeM -public import Cslib.Computability.Automata.Acceptors.Acceptor -public import Cslib.Computability.Automata.Acceptors.OmegaAcceptor -public import Cslib.Computability.Automata.DA.Basic -public import Cslib.Computability.Automata.DA.Buchi -public import Cslib.Computability.Automata.DA.Congr -public import Cslib.Computability.Automata.DA.Prod -public import Cslib.Computability.Automata.DA.ToNA -public import Cslib.Computability.Automata.EpsilonNA.Basic -public import Cslib.Computability.Automata.EpsilonNA.ToNA -public import Cslib.Computability.Automata.NA.Basic -public import Cslib.Computability.Automata.NA.BuchiEquiv -public import Cslib.Computability.Automata.NA.BuchiInter -public import Cslib.Computability.Automata.NA.Concat -public import Cslib.Computability.Automata.NA.Hist -public import Cslib.Computability.Automata.NA.Loop -public import Cslib.Computability.Automata.NA.Pair -public import Cslib.Computability.Automata.NA.Prod -public import Cslib.Computability.Automata.NA.Sum -public import Cslib.Computability.Automata.NA.ToDA -public import Cslib.Computability.Automata.NA.Total -public import Cslib.Computability.Languages.Congruences.BuchiCongruence -public import Cslib.Computability.Languages.Congruences.RightCongruence -public import Cslib.Computability.Languages.ExampleEventuallyZero -public import Cslib.Computability.Languages.Language -public import Cslib.Computability.Languages.OmegaLanguage -public import Cslib.Computability.Languages.OmegaRegularLanguage -public import Cslib.Computability.Languages.RegularLanguage -public import Cslib.Computability.Machines.SingleTapeTuring.Basic -public import Cslib.Computability.URM.Basic -public import Cslib.Computability.URM.Computable -public import Cslib.Computability.URM.Defs -public import Cslib.Computability.URM.Execution -public import Cslib.Computability.URM.StandardForm -public import Cslib.Computability.URM.StraightLine -public import Cslib.Foundations.Combinatorics.InfiniteGraphRamsey -public import Cslib.Foundations.Control.Monad.Free -public import Cslib.Foundations.Control.Monad.Free.Effects -public import Cslib.Foundations.Control.Monad.Free.Fold -public import Cslib.Foundations.Data.BiTape -public import Cslib.Foundations.Data.FinFun -public import Cslib.Foundations.Data.HasFresh -public import Cslib.Foundations.Data.Nat.Segment -public import Cslib.Foundations.Data.OmegaSequence.Defs -public import Cslib.Foundations.Data.OmegaSequence.Flatten -public import Cslib.Foundations.Data.OmegaSequence.InfOcc -public import Cslib.Foundations.Data.OmegaSequence.Init -public import Cslib.Foundations.Data.OmegaSequence.Temporal -public import Cslib.Foundations.Data.RelatesInSteps -public import Cslib.Foundations.Data.Relation -public import Cslib.Foundations.Data.Set.Saturation -public import Cslib.Foundations.Data.StackTape -public import Cslib.Foundations.Lint.Basic -public import Cslib.Foundations.Logic.InferenceSystem -public import Cslib.Foundations.Logic.LogicalEquivalence -public import Cslib.Foundations.Semantics.FLTS.Basic -public import Cslib.Foundations.Semantics.FLTS.FLTSToLTS -public import Cslib.Foundations.Semantics.FLTS.LTSToFLTS -public import Cslib.Foundations.Semantics.FLTS.Prod -public import Cslib.Foundations.Semantics.LTS.Basic -public import Cslib.Foundations.Semantics.LTS.Bisimulation -public import Cslib.Foundations.Semantics.LTS.Divergence -public import Cslib.Foundations.Semantics.LTS.Execution -public import Cslib.Foundations.Semantics.LTS.HasTau -public import Cslib.Foundations.Semantics.LTS.LTSCat.Basic -public import Cslib.Foundations.Semantics.LTS.Notation -public import Cslib.Foundations.Semantics.LTS.OmegaExecution -public import Cslib.Foundations.Semantics.LTS.Relation -public import Cslib.Foundations.Semantics.LTS.Simulation -public import Cslib.Foundations.Semantics.LTS.Termination -public import Cslib.Foundations.Semantics.LTS.Total -public import Cslib.Foundations.Semantics.LTS.TraceEq -public import Cslib.Foundations.Semantics.LTS.Union -public import Cslib.Foundations.Syntax.Congruence -public import Cslib.Foundations.Syntax.Context -public import Cslib.Foundations.Syntax.HasAlphaEquiv -public import Cslib.Foundations.Syntax.HasSubstitution -public import Cslib.Foundations.Syntax.HasWellFormed -public import Cslib.Init -public import Cslib.Languages.CCS.Basic -public import Cslib.Languages.CCS.BehaviouralTheory -public import Cslib.Languages.CCS.Semantics -public import Cslib.Languages.CombinatoryLogic.Basic -public import Cslib.Languages.CombinatoryLogic.Confluence -public import Cslib.Languages.CombinatoryLogic.Defs -public import Cslib.Languages.CombinatoryLogic.Evaluation -public import Cslib.Languages.CombinatoryLogic.List -public import Cslib.Languages.CombinatoryLogic.Recursion -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Context -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Basic -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Opening -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Reduction -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Safety -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Subtype -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Typing -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.WellFormed -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Stlc.Basic -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Stlc.Safety -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Stlc.StrongNorm -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.Basic -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.Congruence -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullBeta -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullBetaConfluence -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullBetaEtaConfluence -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullEta -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullEtaConfluence -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.LcAt -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.MultiApp -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.MultiSubst -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.Properties -public import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.StrongNorm -public import Cslib.Languages.LambdaCalculus.Named.Untyped.Basic -public import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties -public import Cslib.Languages.LambdaCalculus.Named.Untyped.AlphaEquivDefs -public import Cslib.Languages.LambdaCalculus.Named.Untyped.AlphaEquivEquiv -public import Cslib.Languages.LambdaCalculus.Named.Untyped.SwapProperties -public import Cslib.Logics.HML.Basic -public import Cslib.Logics.HML.LogicalEquivalence -public import Cslib.Logics.LinearLogic.CLL.Basic -public import Cslib.Logics.LinearLogic.CLL.CutElimination -public import Cslib.Logics.LinearLogic.CLL.EtaExpansion -public import Cslib.Logics.LinearLogic.CLL.PhaseSemantics.Basic -public import Cslib.Logics.Propositional.Defs +import Cslib.Algorithms.Lean.MergeSort.MergeSort +import Cslib.Algorithms.Lean.TimeM +import Cslib.Computability.Automata.Acceptors.Acceptor +import Cslib.Computability.Automata.Acceptors.OmegaAcceptor +import Cslib.Computability.Automata.DA.Basic +import Cslib.Computability.Automata.DA.Buchi +import Cslib.Computability.Automata.DA.Congr +import Cslib.Computability.Automata.DA.Prod +import Cslib.Computability.Automata.DA.ToNA +import Cslib.Computability.Automata.EpsilonNA.Basic +import Cslib.Computability.Automata.EpsilonNA.ToNA +import Cslib.Computability.Automata.NA.Basic +import Cslib.Computability.Automata.NA.BuchiEquiv +import Cslib.Computability.Automata.NA.BuchiInter +import Cslib.Computability.Automata.NA.Concat +import Cslib.Computability.Automata.NA.Hist +import Cslib.Computability.Automata.NA.Loop +import Cslib.Computability.Automata.NA.Pair +import Cslib.Computability.Automata.NA.Prod +import Cslib.Computability.Automata.NA.Sum +import Cslib.Computability.Automata.NA.ToDA +import Cslib.Computability.Automata.NA.Total +import Cslib.Computability.Languages.Congruences.BuchiCongruence +import Cslib.Computability.Languages.Congruences.RightCongruence +import Cslib.Computability.Languages.ExampleEventuallyZero +import Cslib.Computability.Languages.Language +import Cslib.Computability.Languages.OmegaLanguage +import Cslib.Computability.Languages.OmegaRegularLanguage +import Cslib.Computability.Languages.RegularLanguage +import Cslib.Computability.Machines.SingleTapeTuring.Basic +import Cslib.Computability.URM.Basic +import Cslib.Computability.URM.Computable +import Cslib.Computability.URM.Defs +import Cslib.Computability.URM.Execution +import Cslib.Computability.URM.StandardForm +import Cslib.Computability.URM.StraightLine +import Cslib.Foundations.Combinatorics.InfiniteGraphRamsey +import Cslib.Foundations.Control.Monad.Free +import Cslib.Foundations.Control.Monad.Free.Effects +import Cslib.Foundations.Control.Monad.Free.Fold +import Cslib.Foundations.Data.BiTape +import Cslib.Foundations.Data.FinFun +import Cslib.Foundations.Data.HasFresh +import Cslib.Foundations.Data.Nat.Segment +import Cslib.Foundations.Data.OmegaSequence.Defs +import Cslib.Foundations.Data.OmegaSequence.Flatten +import Cslib.Foundations.Data.OmegaSequence.InfOcc +import Cslib.Foundations.Data.OmegaSequence.Init +import Cslib.Foundations.Data.OmegaSequence.Temporal +import Cslib.Foundations.Data.RelatesInSteps +import Cslib.Foundations.Data.Relation +import Cslib.Foundations.Data.Set.Saturation +import Cslib.Foundations.Data.StackTape +import Cslib.Foundations.Lint.Basic +import Cslib.Foundations.Logic.InferenceSystem +import Cslib.Foundations.Logic.LogicalEquivalence +import Cslib.Foundations.Semantics.FLTS.Basic +import Cslib.Foundations.Semantics.FLTS.FLTSToLTS +import Cslib.Foundations.Semantics.FLTS.LTSToFLTS +import Cslib.Foundations.Semantics.FLTS.Prod +import Cslib.Foundations.Semantics.LTS.Basic +import Cslib.Foundations.Semantics.LTS.Bisimulation +import Cslib.Foundations.Semantics.LTS.Divergence +import Cslib.Foundations.Semantics.LTS.Execution +import Cslib.Foundations.Semantics.LTS.HasTau +import Cslib.Foundations.Semantics.LTS.LTSCat.Basic +import Cslib.Foundations.Semantics.LTS.Notation +import Cslib.Foundations.Semantics.LTS.OmegaExecution +import Cslib.Foundations.Semantics.LTS.Relation +import Cslib.Foundations.Semantics.LTS.Simulation +import Cslib.Foundations.Semantics.LTS.Termination +import Cslib.Foundations.Semantics.LTS.Total +import Cslib.Foundations.Semantics.LTS.TraceEq +import Cslib.Foundations.Semantics.LTS.Union +import Cslib.Foundations.Syntax.Congruence +import Cslib.Foundations.Syntax.Context +import Cslib.Foundations.Syntax.HasAlphaEquiv +import Cslib.Foundations.Syntax.HasSubstitution +import Cslib.Foundations.Syntax.HasWellFormed +import Cslib.Init +import Cslib.Languages.CCS.Basic +import Cslib.Languages.CCS.BehaviouralTheory +import Cslib.Languages.CCS.Semantics +import Cslib.Languages.CombinatoryLogic.Basic +import Cslib.Languages.CombinatoryLogic.Confluence +import Cslib.Languages.CombinatoryLogic.Defs +import Cslib.Languages.CombinatoryLogic.Evaluation +import Cslib.Languages.CombinatoryLogic.List +import Cslib.Languages.CombinatoryLogic.Recursion +import Cslib.Languages.LambdaCalculus.LocallyNameless.Context +import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Basic +import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Opening +import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Reduction +import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Safety +import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Subtype +import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.Typing +import Cslib.Languages.LambdaCalculus.LocallyNameless.Fsub.WellFormed +import Cslib.Languages.LambdaCalculus.LocallyNameless.Stlc.Basic +import Cslib.Languages.LambdaCalculus.LocallyNameless.Stlc.Safety +import Cslib.Languages.LambdaCalculus.LocallyNameless.Stlc.StrongNorm +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.Basic +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.Congruence +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullBeta +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullBetaConfluence +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullBetaEtaConfluence +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullEta +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullEtaConfluence +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.LcAt +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.MultiApp +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.MultiSubst +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.Properties +import Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.StrongNorm +import Cslib.Languages.LambdaCalculus.Named.Untyped.AlphaEquivDefs +import Cslib.Languages.LambdaCalculus.Named.Untyped.AlphaEquivEquiv +import Cslib.Languages.LambdaCalculus.Named.Untyped.Basic +import Cslib.Languages.LambdaCalculus.Named.Untyped.Properties +import Cslib.Languages.LambdaCalculus.Named.Untyped.SwapProperties +import Cslib.Logics.HML.Basic +import Cslib.Logics.HML.LogicalEquivalence +import Cslib.Logics.LinearLogic.CLL.Basic +import Cslib.Logics.LinearLogic.CLL.CutElimination +import Cslib.Logics.LinearLogic.CLL.EtaExpansion +import Cslib.Logics.LinearLogic.CLL.PhaseSemantics.Basic +import Cslib.Logics.Propositional.Defs diff --git a/CslibTests.lean b/CslibTests.lean index 73292aef3..af319a190 100644 --- a/CslibTests.lean +++ b/CslibTests.lean @@ -1,14 +1,12 @@ -module -- shake: keep-all - -public import CslibTests.Bisimulation -public import CslibTests.CCS -public import CslibTests.CLL -public import CslibTests.DFA -public import CslibTests.FreeMonad -public import CslibTests.GrindLint -public import CslibTests.HML -public import CslibTests.HasFresh -public import CslibTests.ImportWithMathlib -public import CslibTests.LTS -public import CslibTests.LambdaCalculus -public import CslibTests.Reduction +import CslibTests.Bisimulation +import CslibTests.CCS +import CslibTests.CLL +import CslibTests.DFA +import CslibTests.FreeMonad +import CslibTests.GrindLint +import CslibTests.HML +import CslibTests.HasFresh +import CslibTests.ImportWithMathlib +import CslibTests.LTS +import CslibTests.LambdaCalculus +import CslibTests.Reduction