diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2025-12-05 23:19:57 +0100 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2025-12-05 23:19:57 +0100 |
| commit | aa280ca672aff145e811b79f4315ba200a09bad5 (patch) | |
| tree | ab6e3f4944c52a8ba928a2f1358084364762baf4 /Algebra/Terms.lean | |
| parent | cc3483496781b10b6acd2450117b443d03957dc4 (diff) | |
define algebras
Diffstat (limited to 'Algebra/Terms.lean')
| -rw-r--r-- | Algebra/Terms.lean | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/Algebra/Terms.lean b/Algebra/Terms.lean index 997dca4..568f5cb 100644 --- a/Algebra/Terms.lean +++ b/Algebra/Terms.lean @@ -1,7 +1,7 @@ import Mathlib import Nominal -namespace Algebra +namespace NominalAlgebra section Definitions @@ -20,9 +20,9 @@ def Signature.pureArgs (sig : Signature) (f : sig.pure) : Type := sig.args (.inl def Signature.freeArgs (sig : Signature) (f : sig.free) : Type := sig.args (.inr (.inl f)) def Signature.boundArgs (sig : Signature) (f : sig.bound) : Type := sig.args (.inr (.inr f)) -def Signature.pureArgs_fintype (sig : Signature) (f : sig.pure) : Fintype (sig.pureArgs f) := sig.args_fintype (.inl f) -def Signature.freeArgs_fintype (sig : Signature) (f : sig.free) : Fintype (sig.freeArgs f) := sig.args_fintype (.inr (.inl f)) -def Signature.boundArgs_fintype (sig : Signature) (f : sig.bound) : Fintype (sig.boundArgs f) := sig.args_fintype (.inr (.inr f)) +instance Signature.instPureArgsFintype (sig : Signature) (f : sig.pure) : Fintype (sig.pureArgs f) := sig.args_fintype (.inl f) +instance Signature.instFreeArgsFintype (sig : Signature) (f : sig.free) : Fintype (sig.freeArgs f) := sig.args_fintype (.inr (.inl f)) +instance Signature.instBoundArgsFintype (sig : Signature) (f : sig.bound) : Fintype (sig.boundArgs f) := sig.args_fintype (.inr (.inr f)) def Signature.arity (sig : Signature) (f : sig.pure ⊕ sig.free ⊕ sig.bound) : ℕ := (sig.args_fintype f).card def Signature.pureArity (sig : Signature) (f : sig.pure) : ℕ := sig.arity (.inl f) @@ -217,23 +217,13 @@ private def atoms : Term 𝔸 sig X → Set 𝔸 private lemma atoms_finite (t : Term 𝔸 sig X) : t.atoms.Finite := by fun_induction atoms <;> all_goals expose_names · exact NominalSet.supp_finite 𝔸 - · have hfin := (sig.pureArgs_fintype f).finite - apply Set.Finite.sUnion + · apply Set.Finite.sUnion · simp only [Set.setOf_exists, Set.setOf_eq_eq_singleton', Set.iUnion_singleton_eq_range] apply Set.finite_range · intro S ⟨x, hS⟩ rw [← hS] exact ih1 x - · have hfin := (sig.freeArgs_fintype f).finite - apply Set.Finite.union - · exact Set.finite_singleton a - · apply Set.Finite.sUnion - · simp only [Set.setOf_exists, Set.setOf_eq_eq_singleton', Set.iUnion_singleton_eq_range] - apply Set.finite_range - · intro S ⟨x, hS⟩ - rw [← hS] - exact ih1 x - · have hfin := (sig.boundArgs_fintype f).finite + all_goals apply Set.Finite.union · exact Set.finite_singleton a · apply Set.Finite.sUnion @@ -319,4 +309,4 @@ end TermAtDepth end NominalSet -end Algebra +end NominalAlgebra |
