summaryrefslogtreecommitdiff
path: root/Algebra
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2025-12-05 23:32:38 +0100
committerHannes Schulze <haschu0103@outlook.de>2025-12-05 23:34:25 +0100
commit7750ccdcb2afebe90da275f96e276a672a3c8a74 (patch)
tree52f5f8ee9df1048c97e44f4f250ce44651e9ec98 /Algebra
parentaa280ca672aff145e811b79f4315ba200a09bad5 (diff)
revise OrbitFinite restriction for equations
Diffstat (limited to 'Algebra')
-rw-r--r--Algebra/Derivations.lean29
1 files changed, 13 insertions, 16 deletions
diff --git a/Algebra/Derivations.lean b/Algebra/Derivations.lean
index e2cd052..717ffe1 100644
--- a/Algebra/Derivations.lean
+++ b/Algebra/Derivations.lean
@@ -12,7 +12,6 @@ variable (sig : Signature)
structure Equation where
vars : Type
[vars_nominal : NominalSet 𝔸 vars]
- [vars_orbitFinite : OrbitFinite 𝔸 vars]
left : Term 𝔸 sig vars
right : Term 𝔸 sig vars
@@ -21,9 +20,6 @@ namespace Equation
instance (eq : Equation 𝔸 sig) : NominalSet 𝔸 eq.vars :=
eq.vars_nominal
-instance (eq : Equation 𝔸 sig) : OrbitFinite 𝔸 eq.vars :=
- eq.vars_orbitFinite
-
def HasDepth
{𝔸 : Type} [Infinite 𝔸] [Countable 𝔸] [DecidableEq 𝔸] {sig : Signature}
(eq : Equation 𝔸 sig) (n : β„•) : Prop :=
@@ -37,6 +33,7 @@ def UniformEquation :=
structure Theory where
sig : Signature
axioms : Set (UniformEquation 𝔸 sig)
+ axioms_orbitFinite : βˆ€ eq ∈ axioms, OrbitFinite 𝔸 eq.val.vars
end Theories
@@ -46,7 +43,7 @@ variable {sig : Signature}
section Helpers
def UniformEquation.mk
- (X : Type) [NominalSet 𝔸 X] [OrbitFinite 𝔸 X] {n : β„•} (t u : TermAtDepth 𝔸 sig X n) :
+ (X : Type) [NominalSet 𝔸 X] {n : β„•} (t u : TermAtDepth 𝔸 sig X n) :
UniformEquation 𝔸 sig :=
⟨⟨X, t.val, u.val⟩, ⟨n, t.prop, u.prop⟩⟩
@@ -57,47 +54,47 @@ end Helpers
section DerivableEquations
inductive Derivable (T : Theory 𝔸) : (eq : UniformEquation 𝔸 T.sig) β†’ Prop
- | refl {X : Type} [NominalSet 𝔸 X] [OrbitFinite 𝔸 X] {x : X} :
+ | refl {X : Type} [NominalSet 𝔸 X] {x : X} :
Derivable T (X ⊒ .var x ≣ .var x)
- | symm {X : Type} [NominalSet 𝔸 X] [OrbitFinite 𝔸 X]
+ | symm {X : Type} [NominalSet 𝔸 X]
{m : β„•} {t u : TermAtDepth 𝔸 T.sig X m} :
Derivable T (X ⊒ u ≣ t) β†’
Derivable T (X ⊒ t ≣ u)
- | trans {X : Type} [NominalSet 𝔸 X] [OrbitFinite 𝔸 X]
+ | trans {X : Type} [NominalSet 𝔸 X]
{m : β„•} {t u v : TermAtDepth 𝔸 T.sig X m} :
Derivable T (X ⊒ t ≣ v) β†’
Derivable T (X ⊒ v ≣ u) β†’
Derivable T (X ⊒ t ≣ u)
- | cong_pure {X : Type} [NominalSet 𝔸 X] [OrbitFinite 𝔸 X]
+ | cong_pure {X : Type} [NominalSet 𝔸 X]
{f : T.sig.pure} {m : β„•} {ts us : T.sig.pureArgs f β†’ TermAtDepth 𝔸 T.sig X m} :
(βˆ€ x, Derivable T (X ⊒ ts x ≣ us x)) β†’
Derivable T (X ⊒ .pure f ts ≣ .pure f us)
- | cong_free {X : Type} [NominalSet 𝔸 X] [OrbitFinite 𝔸 X]
+ | cong_free {X : Type} [NominalSet 𝔸 X]
{a : 𝔸} {f : T.sig.free} {m : β„•} {ts us : T.sig.freeArgs f β†’ TermAtDepth 𝔸 T.sig X m} :
(βˆ€ x, Derivable T (X ⊒ ts x ≣ us x)) β†’
Derivable T (X ⊒ .free a f ts ≣ .free a f us)
- | cong_bound {X : Type} [NominalSet 𝔸 X] [OrbitFinite 𝔸 X]
+ | cong_bound {X : Type} [NominalSet 𝔸 X]
{a : 𝔸} {f : T.sig.bound} {m : β„•} {ts us : T.sig.boundArgs f β†’ TermAtDepth 𝔸 T.sig X m} :
(βˆ€ x, Derivable T (X ⊒ ts x ≣ us x)) β†’
Derivable T (X ⊒ .bound a f ts ≣ .bound a f us)
- | ax' {X Y : Type} [NominalSet 𝔸 X] [OrbitFinite 𝔸 X] [NominalSet 𝔸 Y] [OrbitFinite 𝔸 Y]
+ | ax' {X Y : Type} [NominalSet 𝔸 X] [NominalSet 𝔸 Y]
{m : β„•} {r s : TermAtDepth 𝔸 T.sig Y m}
{l : β„•} {Οƒ : UniformSubstitution 𝔸 T.sig Y X l} {Ο„ : FPerm 𝔸} :
((Y ⊒ r ≣ s) ∈ T.axioms) β†’
(βˆ€ (y : Y) (Ο€ : FPerm 𝔸), Derivable T (X ⊒ Οƒ (Ο€ β€’ y) ≣ Ο€ β€’ (Οƒ y))) β†’
Derivable T (X ⊒ Οƒ.apply (Ο„ β€’ r) ≣ Οƒ.apply (Ο„ β€’ s))
- | perm {X : Type} [NominalSet 𝔸 X] [OrbitFinite 𝔸 X]
+ | perm {X : Type} [NominalSet 𝔸 X]
{a b : 𝔸} {f : T.sig.bound} {m : β„•} {ts us : T.sig.boundArgs f β†’ TermAtDepth 𝔸 T.sig X m} :
a β‰  b β†’
(βˆ€ x, a # us x) β†’
(βˆ€ x, Derivable T (X ⊒ ts x ≣ βΈ¨a, bβΈ© β€’ us x)) β†’
Derivable T (X ⊒ .bound a f ts ≣ .bound b f us)
-def DerivableEq (T : Theory 𝔸) (X : Type) [NominalSet 𝔸 X] [OrbitFinite 𝔸 X] (n : β„•) :
+def DerivableEq (T : Theory 𝔸) (X : Type) [NominalSet 𝔸 X] (n : β„•) :
Rel (TermAtDepth 𝔸 T.sig X n) (TermAtDepth 𝔸 T.sig X n) :=
fun t u => Derivable T (X ⊒ t ≣ u)
-variable {X Y : Type} [NominalSet 𝔸 X] [OrbitFinite 𝔸 X] [NominalSet 𝔸 Y] [OrbitFinite 𝔸 Y]
+variable {X Y : Type} [NominalSet 𝔸 X] [NominalSet 𝔸 Y]
def UniformSubstitution.DerivablyEquivariant
(T : Theory 𝔸) {l : β„•} (Οƒ : UniformSubstitution 𝔸 T.sig X Y l) : Prop :=
@@ -157,7 +154,7 @@ lemma Derivable.equivariant {m : β„•} {t u : TermAtDepth 𝔸 T.sig X m} :
let right : TermAtDepth 𝔸 T.sig eq.val.vars n := ⟨eq.val.right, hnβ‚‚βŸ©
use n; exact ⟨(Ο€ β€’ left).prop, (Ο€ β€’ right).prop⟩⟩
have rename_eq
- {Y : Type} [NominalSet 𝔸 Y] [OrbitFinite 𝔸 Y] {Ο€ : FPerm 𝔸} {k : β„•}
+ {Y : Type} [NominalSet 𝔸 Y] {Ο€ : FPerm 𝔸} {k : β„•}
{r s : TermAtDepth 𝔸 T.sig Y k} : rename Ο€ (Y ⊒ r ≣ s) = (Y ⊒ Ο€ β€’ r ≣ Ο€ β€’ s) := rfl
suffices βˆ€ eq, Derivable T eq β†’ Derivable T (rename Ο€ eq) by
exact this (X ⊒ t ≣ u)