From b0c3fa7f8e00ae43bdce413be2f45999804f20ec Mon Sep 17 00:00:00 2001 From: leanprover-community-bot Date: Thu, 13 Apr 2023 00:44:38 +0000 Subject: [PATCH] bump to nightly-2023-04-13-00 mathlib commit https://github.com/leanprover-community/mathlib/commit/039ef89bef6e58b32b62898dd48e9d1a4312bb65 --- .../SpecificGroups/Alternating.lean | 92 +++++ Mathbin/ModelTheory/Bundled.lean | 8 +- Mathbin/ModelTheory/LanguageMap.lean | 376 +++++++++++++----- Mathbin/ModelTheory/Order.lean | 10 +- Mathbin/ModelTheory/Semantics.lean | 20 +- Mathbin/ModelTheory/Skolem.lean | 4 +- Mathbin/ModelTheory/Substructures.lean | 6 +- Mathbin/ModelTheory/Syntax.lean | 40 +- lake-manifest.json | 8 +- lakefile.lean | 4 +- 10 files changed, 426 insertions(+), 142 deletions(-) diff --git a/Mathbin/GroupTheory/SpecificGroups/Alternating.lean b/Mathbin/GroupTheory/SpecificGroups/Alternating.lean index ba4fd71791..a1bb7e8d4a 100644 --- a/Mathbin/GroupTheory/SpecificGroups/Alternating.lean +++ b/Mathbin/GroupTheory/SpecificGroups/Alternating.lean @@ -48,28 +48,48 @@ open Equiv Equiv.Perm Subgroup Fintype variable (α : Type _) [Fintype α] [DecidableEq α] +#print alternatingGroup /- /-- The alternating group on a finite type, realized as a subgroup of `equiv.perm`. For $A_n$, use `alternating_group (fin n)`. -/ def alternatingGroup : Subgroup (Perm α) := sign.ker deriving Fintype #align alternating_group alternatingGroup +-/ instance [Subsingleton α] : Unique (alternatingGroup α) := ⟨⟨1⟩, fun ⟨p, hp⟩ => Subtype.eq (Subsingleton.elim p _)⟩ variable {α} +/- warning: alternating_group_eq_sign_ker -> alternatingGroup_eq_sign_ker is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α], Eq.{succ u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)) (MonoidHom.ker.{u1, 0} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid) (Equiv.Perm.sign.{u1} α (fun (a : α) (b : α) => _inst_2 a b) _inst_1)) +but is expected to have type + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α], Eq.{succ u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)) (MonoidHom.ker.{u1, 0} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (Equiv.Perm.sign.{u1} α (fun (a : α) (b : α) => _inst_2 a b) _inst_1)) +Case conversion may be inaccurate. Consider using '#align alternating_group_eq_sign_ker alternatingGroup_eq_sign_kerₓ'. -/ theorem alternatingGroup_eq_sign_ker : alternatingGroup α = sign.ker := rfl #align alternating_group_eq_sign_ker alternatingGroup_eq_sign_ker namespace Equiv.Perm +/- warning: equiv.perm.mem_alternating_group -> Equiv.Perm.mem_alternatingGroup is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {f : Equiv.Perm.{succ u1} α}, Iff (Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) f (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, 0} (Equiv.Perm.{succ u1} α) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{u1, 0} (Equiv.Perm.{succ u1} α) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{succ u1} α) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{u1, 0} (Equiv.Perm.{succ u1} α) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{u1} α (fun (a : α) (b : α) => _inst_2 a b) _inst_1) f) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) +but is expected to have type + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {f : Equiv.Perm.{succ u1} α}, Iff (Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) f (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{succ u1} α) => Units.{0} Int Int.instMonoidInt) f) (FunLike.coe.{succ u1, succ u1, 1} (MonoidHom.{u1, 0} (Equiv.Perm.{succ u1} α) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{succ u1} α) (fun (_x : Equiv.Perm.{succ u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{succ u1} α) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{u1, u1, 0} (MonoidHom.{u1, 0} (Equiv.Perm.{succ u1} α) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{succ u1} α) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{u1} (Equiv.Perm.{succ u1} α) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{u1, u1, 0} (MonoidHom.{u1, 0} (Equiv.Perm.{succ u1} α) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{succ u1} α) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{u1, 0} (Equiv.Perm.{succ u1} α) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{u1} α (fun (a : α) (b : α) => _inst_2 a b) _inst_1) f) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{succ u1} α) => Units.{0} Int Int.instMonoidInt) f) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{succ u1} α) => Units.{0} Int Int.instMonoidInt) f) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{succ u1} α) => Units.{0} Int Int.instMonoidInt) f) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{succ u1} α) => Units.{0} Int Int.instMonoidInt) f) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{succ u1} α) => Units.{0} Int Int.instMonoidInt) f) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{succ u1} α) => Units.{0} Int Int.instMonoidInt) f) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{succ u1} α) => Units.{0} Int Int.instMonoidInt) f) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) +Case conversion may be inaccurate. Consider using '#align equiv.perm.mem_alternating_group Equiv.Perm.mem_alternatingGroupₓ'. -/ @[simp] theorem mem_alternatingGroup {f : Perm α} : f ∈ alternatingGroup α ↔ sign f = 1 := sign.mem_ker #align equiv.perm.mem_alternating_group Equiv.Perm.mem_alternatingGroup +/- warning: equiv.perm.prod_list_swap_mem_alternating_group_iff_even_length -> Equiv.Perm.prod_list_swap_mem_alternatingGroup_iff_even_length is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {l : List.{u1} (Equiv.Perm.{succ u1} α)}, (forall (g : Equiv.Perm.{succ u1} α), (Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (List.{u1} (Equiv.Perm.{succ u1} α)) (List.hasMem.{u1} (Equiv.Perm.{succ u1} α)) g l) -> (Equiv.Perm.IsSwap.{u1} α (fun (a : α) (b : α) => _inst_2 a b) g)) -> (Iff (Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (List.prod.{u1} (Equiv.Perm.{succ u1} α) (MulOneClass.toHasMul.{u1} (Equiv.Perm.{succ u1} α) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))))) (MulOneClass.toHasOne.{u1} (Equiv.Perm.{succ u1} α) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))))) l) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Even.{0} Nat Nat.hasAdd (List.length.{u1} (Equiv.Perm.{succ u1} α) l))) +but is expected to have type + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {l : List.{u1} (Equiv.Perm.{succ u1} α)}, (forall (g : Equiv.Perm.{succ u1} α), (Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (List.{u1} (Equiv.Perm.{succ u1} α)) (List.instMembershipList.{u1} (Equiv.Perm.{succ u1} α)) g l) -> (Equiv.Perm.IsSwap.{u1} α (fun (a : α) (b : α) => _inst_2 a b) g)) -> (Iff (Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (List.prod.{u1} (Equiv.Perm.{succ u1} α) (MulOneClass.toMul.{u1} (Equiv.Perm.{succ u1} α) (Monoid.toMulOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))))) (InvOneClass.toOne.{u1} (Equiv.Perm.{succ u1} α) (DivInvOneMonoid.toInvOneClass.{u1} (Equiv.Perm.{succ u1} α) (DivisionMonoid.toDivInvOneMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivisionMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))))) l) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Even.{0} Nat instAddNat (List.length.{u1} (Equiv.Perm.{succ u1} α) l))) +Case conversion may be inaccurate. Consider using '#align equiv.perm.prod_list_swap_mem_alternating_group_iff_even_length Equiv.Perm.prod_list_swap_mem_alternatingGroup_iff_even_lengthₓ'. -/ theorem prod_list_swap_mem_alternatingGroup_iff_even_length {l : List (Perm α)} (hl : ∀ g ∈ l, IsSwap g) : l.Prod ∈ alternatingGroup α ↔ Even l.length := by @@ -78,11 +98,23 @@ theorem prod_list_swap_mem_alternatingGroup_iff_even_length {l : List (Perm α)} decide #align equiv.perm.prod_list_swap_mem_alternating_group_iff_even_length Equiv.Perm.prod_list_swap_mem_alternatingGroup_iff_even_length +/- warning: equiv.perm.is_three_cycle.mem_alternating_group -> Equiv.Perm.IsThreeCycle.mem_alternatingGroup is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {f : Equiv.Perm.{succ u1} α}, (Equiv.Perm.IsThreeCycle.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) f) -> (Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) f (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) +but is expected to have type + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {f : Equiv.Perm.{succ u1} α}, (Equiv.Perm.IsThreeCycle.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) f) -> (Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) f (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) +Case conversion may be inaccurate. Consider using '#align equiv.perm.is_three_cycle.mem_alternating_group Equiv.Perm.IsThreeCycle.mem_alternatingGroupₓ'. -/ theorem IsThreeCycle.mem_alternatingGroup {f : Perm α} (h : IsThreeCycle f) : f ∈ alternatingGroup α := mem_alternatingGroup.2 h.sign #align equiv.perm.is_three_cycle.mem_alternating_group Equiv.Perm.IsThreeCycle.mem_alternatingGroup +/- warning: equiv.perm.fin_rotate_bit1_mem_alternating_group -> Equiv.Perm.finRotate_bit1_mem_alternatingGroup is a dubious translation: +lean 3 declaration is + forall {n : Nat}, Membership.Mem.{0, 0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n))) (Equiv.Perm.permGroup.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n)))) (SetLike.hasMem.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n))) (Equiv.Perm.permGroup.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n)))) (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n))) (Equiv.Perm.permGroup.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n))))) (finRotate (bit1.{0} Nat Nat.hasOne Nat.hasAdd n)) (alternatingGroup.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n)) (Fin.fintype (bit1.{0} Nat Nat.hasOne Nat.hasAdd n)) (fun (a : Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n)) (b : Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd n)) => Fin.decidableEq (bit1.{0} Nat Nat.hasOne Nat.hasAdd n) a b)) +but is expected to have type + forall {n : Nat}, Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n))) (Equiv.Perm.permGroup.{0} (Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n)))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n))) (Equiv.Perm.permGroup.{0} (Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n)))) (Equiv.Perm.{1} (Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n))) (Equiv.Perm.permGroup.{0} (Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n))))) (finRotate (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n)) (alternatingGroup.{0} (Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n)) (Fin.fintype (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n)) (fun (a : Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n)) (b : Fin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n)) => instDecidableEqFin (bit1.{0} Nat (CanonicallyOrderedCommSemiring.toOne.{0} Nat Nat.canonicallyOrderedCommSemiring) instAddNat n) a b)) +Case conversion may be inaccurate. Consider using '#align equiv.perm.fin_rotate_bit1_mem_alternating_group Equiv.Perm.finRotate_bit1_mem_alternatingGroupₓ'. -/ theorem finRotate_bit1_mem_alternatingGroup {n : ℕ} : finRotate (bit1 n) ∈ alternatingGroup (Fin (bit1 n)) := by rw [mem_alternating_group, bit1, sign_finRotate, pow_bit0', Int.units_mul_self, one_pow] @@ -90,6 +122,12 @@ theorem finRotate_bit1_mem_alternatingGroup {n : ℕ} : end Equiv.Perm +/- warning: two_mul_card_alternating_group -> two_mul_card_alternatingGroup is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] [_inst_3 : Nontrivial.{u1} α], Eq.{1} Nat (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fintype.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (alternatingGroup.fintype.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Fintype.card.{u1} (Equiv.Perm.{succ u1} α) (Equiv.fintype.{u1, u1} α α (fun (a : α) (b : α) => _inst_2 a b) (fun (a : α) (b : α) => _inst_2 a b) _inst_1 _inst_1)) +but is expected to have type + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] [_inst_3 : Nontrivial.{u1} α], Eq.{1} Nat (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) (Fintype.card.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (fta.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Fintype.card.{u1} (Equiv.Perm.{succ u1} α) (equivFintype.{u1, u1} α α (fun (a : α) (b : α) => _inst_2 a b) (fun (a : α) (b : α) => _inst_2 a b) _inst_1 _inst_1)) +Case conversion may be inaccurate. Consider using '#align two_mul_card_alternating_group two_mul_card_alternatingGroupₓ'. -/ theorem two_mul_card_alternatingGroup [Nontrivial α] : 2 * card (alternatingGroup α) = card (Perm α) := by @@ -102,10 +140,18 @@ namespace alternatingGroup open Equiv.Perm +#print alternatingGroup.normal /- instance normal : (alternatingGroup α).Normal := sign.normal_ker #align alternating_group.normal alternatingGroup.normal +-/ +/- warning: alternating_group.is_conj_of -> alternatingGroup.isConj_of is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {σ : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))} {τ : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))}, (IsConj.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeSubtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))))) σ) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeSubtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))))) τ)) -> (LE.le.{0} Nat Nat.hasLe (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Finset.card.{u1} α (Equiv.Perm.support.{u1} α (fun (a : α) (b : α) => _inst_2 a b) _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeSubtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))))) σ))) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fintype.card.{u1} α _inst_1)) -> (IsConj.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))) σ τ) +but is expected to have type + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {σ : Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))} {τ : Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))}, (IsConj.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (Subtype.val.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Set.{u1} (Equiv.Perm.{succ u1} α)) (Set.instMembershipSet.{u1} (Equiv.Perm.{succ u1} α)) x (SetLike.coe.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) σ) (Subtype.val.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Set.{u1} (Equiv.Perm.{succ u1} α)) (Set.instMembershipSet.{u1} (Equiv.Perm.{succ u1} α)) x (SetLike.coe.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) τ)) -> (LE.le.{0} Nat instLENat (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Finset.card.{u1} α (Equiv.Perm.support.{u1} α (fun (a : α) (b : α) => _inst_2 a b) _inst_1 (Subtype.val.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Set.{u1} (Equiv.Perm.{succ u1} α)) (Set.instMembershipSet.{u1} (Equiv.Perm.{succ u1} α)) x (SetLike.coe.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) σ))) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (Fintype.card.{u1} α _inst_1)) -> (IsConj.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Submonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (Subgroup.toSubmonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) σ τ) +Case conversion may be inaccurate. Consider using '#align alternating_group.is_conj_of alternatingGroup.isConj_ofₓ'. -/ theorem isConj_of {σ τ : alternatingGroup α} (hc : IsConj (σ : Perm α) (τ : Perm α)) (hσ : (σ : Perm α).support.card + 2 ≤ Fintype.card α) : IsConj σ τ := by @@ -134,6 +180,12 @@ theorem isConj_of {σ τ : alternatingGroup α} (hc : IsConj (σ : Perm α) (τ simp [mul_assoc] #align alternating_group.is_conj_of alternatingGroup.isConj_of +/- warning: alternating_group.is_three_cycle_is_conj -> alternatingGroup.isThreeCycle_isConj is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α], (LE.le.{0} Nat Nat.hasLe (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fintype.card.{u1} α _inst_1)) -> (forall {σ : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))} {τ : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))}, (Equiv.Perm.IsThreeCycle.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeSubtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))))) σ)) -> (Equiv.Perm.IsThreeCycle.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Equiv.Perm.{succ u1} α) (coeSubtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))))) τ)) -> (IsConj.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))) σ τ)) +but is expected to have type + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α], (LE.le.{0} Nat instLENat (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) (Fintype.card.{u1} α _inst_1)) -> (forall {σ : Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))} {τ : Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))}, (Equiv.Perm.IsThreeCycle.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) (Subtype.val.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Set.{u1} (Equiv.Perm.{succ u1} α)) (Set.instMembershipSet.{u1} (Equiv.Perm.{succ u1} α)) x (SetLike.coe.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) σ)) -> (Equiv.Perm.IsThreeCycle.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) (Subtype.val.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Set.{u1} (Equiv.Perm.{succ u1} α)) (Set.instMembershipSet.{u1} (Equiv.Perm.{succ u1} α)) x (SetLike.coe.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) τ)) -> (IsConj.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Submonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (DivInvMonoid.toMonoid.{u1} (Equiv.Perm.{succ u1} α) (Group.toDivInvMonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (Subgroup.toSubmonoid.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) σ τ)) +Case conversion may be inaccurate. Consider using '#align alternating_group.is_three_cycle_is_conj alternatingGroup.isThreeCycle_isConjₓ'. -/ theorem isThreeCycle_isConj (h5 : 5 ≤ Fintype.card α) {σ τ : alternatingGroup α} (hσ : IsThreeCycle (σ : Perm α)) (hτ : IsThreeCycle (τ : Perm α)) : IsConj σ τ := alternatingGroup.isConj_of (isConj_iff_cycleType_eq.2 (hσ.trans hτ.symm)) @@ -146,6 +198,7 @@ namespace Equiv.Perm open alternatingGroup +#print Equiv.Perm.closure_three_cycles_eq_alternating /- @[simp] theorem closure_three_cycles_eq_alternating : closure { σ : Perm α | IsThreeCycle σ } = alternatingGroup α := @@ -173,7 +226,14 @@ theorem closure_three_cycles_eq_alternating : (hl b (List.mem_cons_of_mem a (l.mem_cons_self b)))) (ih _ (fun g hg => hl g (List.mem_cons_of_mem _ (List.mem_cons_of_mem _ hg))) hn) #align equiv.perm.closure_three_cycles_eq_alternating Equiv.Perm.closure_three_cycles_eq_alternating +-/ +/- warning: equiv.perm.is_three_cycle.alternating_normal_closure -> Equiv.Perm.IsThreeCycle.alternating_normalClosure is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α], (LE.le.{0} Nat Nat.hasLe (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fintype.card.{u1} α _inst_1)) -> (forall {f : Equiv.Perm.{succ u1} α} (hf : Equiv.Perm.IsThreeCycle.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) f), Eq.{succ u1} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Subgroup.normalClosure.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Subtype.mk.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.Mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) f (Equiv.Perm.IsThreeCycle.mem_alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) f hf)))) (Top.top.{u1} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Subgroup.hasTop.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))))) +but is expected to have type + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α], (LE.le.{0} Nat instLENat (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) (Fintype.card.{u1} α _inst_1)) -> (forall {f : Equiv.Perm.{succ u1} α} (hf : Equiv.Perm.IsThreeCycle.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) f), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Subgroup.normalClosure.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) (Singleton.singleton.{u1, u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Set.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))) (Set.instSingletonSet.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))) (Subtype.mk.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))) f (Equiv.Perm.IsThreeCycle.mem_alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) f hf)))) (Top.top.{u1} (Subgroup.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Subgroup.instTopSubgroup.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) (Subgroup.toGroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))))) +Case conversion may be inaccurate. Consider using '#align equiv.perm.is_three_cycle.alternating_normal_closure Equiv.Perm.IsThreeCycle.alternating_normalClosureₓ'. -/ /-- A key lemma to prove $A_5$ is simple. Shows that any normal subgroup of an alternating group on at least 5 elements is the entire alternating group if it contains a 3-cycle. -/ theorem IsThreeCycle.alternating_normalClosure (h5 : 5 ≤ Fintype.card α) {f : Perm α} @@ -192,6 +252,7 @@ theorem IsThreeCycle.alternating_normalClosure (h5 : 5 ≤ Fintype.card α) {f : exact ⟨⟨f, hf.mem_alternating_group⟩, Set.mem_singleton _, is_three_cycle_is_conj h5 hf h⟩) #align equiv.perm.is_three_cycle.alternating_normal_closure Equiv.Perm.IsThreeCycle.alternating_normalClosure +#print Equiv.Perm.isThreeCycle_sq_of_three_mem_cycleType_five /- /-- Part of proving $A_5$ is simple. Shows that the square of any element of $A_5$ with a 3-cycle in its cycle decomposition is a 3-cycle, so the normal closure of the original element must be $A_5$. -/ @@ -211,6 +272,7 @@ theorem isThreeCycle_sq_of_three_mem_cycleType_five {g : Perm (Fin 5)} (h : 3 rw [← hd.card_support_mul, h3] exact (c * g').support.card_le_univ #align equiv.perm.is_three_cycle_sq_of_three_mem_cycle_type_five Equiv.Perm.isThreeCycle_sq_of_three_mem_cycleType_five +-/ end Equiv.Perm @@ -218,6 +280,12 @@ namespace alternatingGroup open Equiv.Perm +/- warning: alternating_group.nontrivial_of_three_le_card -> alternatingGroup.nontrivial_of_three_le_card is a dubious translation: +lean 3 declaration is + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α], (LE.le.{0} Nat Nat.hasLe (OfNat.ofNat.{0} Nat 3 (OfNat.mk.{0} Nat 3 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fintype.card.{u1} α _inst_1)) -> (Nontrivial.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.setLike.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b)))) +but is expected to have type + forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : DecidableEq.{succ u1} α], (LE.le.{0} Nat instLENat (OfNat.ofNat.{0} Nat 3 (instOfNatNat 3)) (Fintype.card.{u1} α _inst_1)) -> (Nontrivial.{u1} (Subtype.{succ u1} (Equiv.Perm.{succ u1} α) (fun (x : Equiv.Perm.{succ u1} α) => Membership.mem.{u1, u1} (Equiv.Perm.{succ u1} α) (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α)) (Equiv.Perm.{succ u1} α) (Subgroup.instSetLikeSubgroup.{u1} (Equiv.Perm.{succ u1} α) (Equiv.Perm.permGroup.{u1} α))) x (alternatingGroup.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b))))) +Case conversion may be inaccurate. Consider using '#align alternating_group.nontrivial_of_three_le_card alternatingGroup.nontrivial_of_three_le_cardₓ'. -/ theorem nontrivial_of_three_le_card (h3 : 3 ≤ card α) : Nontrivial (alternatingGroup α) := by haveI := Fintype.one_lt_card_iff_nontrivial.1 (lt_trans (by decide) h3) @@ -233,6 +301,12 @@ instance {n : ℕ} : Nontrivial (alternatingGroup (Fin (n + 3))) := rw [card_fin] exact le_add_left (le_refl 3)) +/- warning: alternating_group.normal_closure_fin_rotate_five -> alternatingGroup.normalClosure_finRotate_five is a dubious translation: +lean 3 declaration is + Eq.{1} (Subgroup.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b)))) (Subgroup.normalClosure.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Singleton.singleton.{0, 0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Set.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b)))) (Set.hasSingleton.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b)))) (Subtype.mk.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) => Membership.Mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (SetLike.hasMem.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (finRotate (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.finRotate_bit1_mem_alternatingGroup (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Top.top.{0} (Subgroup.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b)))) (Subgroup.hasTop.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))))) +but is expected to have type + Eq.{1} (Subgroup.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.normalClosure.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))) (Singleton.singleton.{0, 0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Set.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))))) (Set.instSingletonSet.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))))) (Subtype.mk.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))) (finRotate (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Equiv.Perm.finRotate_bit1_mem_alternatingGroup (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))) (Top.top.{0} (Subgroup.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.instTopSubgroup.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))))) +Case conversion may be inaccurate. Consider using '#align alternating_group.normal_closure_fin_rotate_five alternatingGroup.normalClosure_finRotate_fiveₓ'. -/ /-- The normal closure of the 5-cycle `fin_rotate 5` within $A_5$ is the whole group. This will be used to show that the normal closure of any 5-cycle within $A_5$ is the whole group. -/ theorem normalClosure_finRotate_five : @@ -258,6 +332,12 @@ theorem normalClosure_finRotate_five : (inv_mem h)) #align alternating_group.normal_closure_fin_rotate_five alternatingGroup.normalClosure_finRotate_five +/- warning: alternating_group.normal_closure_swap_mul_swap_five -> alternatingGroup.normalClosure_swap_mul_swap_five is a dubious translation: +lean 3 declaration is + Eq.{1} (Subgroup.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b)))) (Subgroup.normalClosure.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Singleton.singleton.{0, 0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Set.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b)))) (Set.hasSingleton.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b)))) (Subtype.mk.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) => Membership.Mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (SetLike.hasMem.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (MulOneClass.toHasMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (Zero.zero.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasZeroOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (bit1.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Iff.mpr (Membership.Mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (SetLike.hasMem.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (MulOneClass.toHasMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (Zero.zero.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasZeroOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (bit1.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (MulOneClass.toHasMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (Zero.zero.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasZeroOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (bit1.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) (Equiv.Perm.mem_alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (MulOneClass.toHasMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (Zero.zero.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasZeroOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (bit1.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (AsTrue.get (Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (MulOneClass.toHasMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (Zero.zero.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasZeroOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (bit1.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) (Units.decidableEq.{0} Int Int.monoid (fun (a : Int) (b : Int) => Int.decidableEq a b) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (MulOneClass.toHasMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (Zero.zero.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasZeroOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (bit1.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) trivial))))) (Top.top.{0} (Subgroup.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b)))) (Subgroup.hasTop.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))))) +but is expected to have type + Eq.{1} (Subgroup.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.normalClosure.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))) (Singleton.singleton.{0, 0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Set.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))))) (Set.instSingletonSet.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))))) (Subtype.mk.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))))) (Iff.mpr (Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))) (Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (_x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) (Equiv.Perm.mem_alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (of_decide_eq_true (Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (_x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) (Units.instDecidableEqUnits.{0} Int Int.instMonoidInt (fun (a : Int) (b : Int) => Int.instDecidableEqInt a b) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (_x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Units.{0} Int Int.instMonoidInt) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) (Eq.refl.{1} Bool Bool.true)))))) (Top.top.{0} (Subgroup.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.instTopSubgroup.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))))) +Case conversion may be inaccurate. Consider using '#align alternating_group.normal_closure_swap_mul_swap_five alternatingGroup.normalClosure_swap_mul_swap_fiveₓ'. -/ /-- The normal closure of $(04)(13)$ within $A_5$ is the whole group. This will be used to show that the normal closure of any permutation of cycle type $(2,2)$ is the whole group. -/ @@ -282,6 +362,12 @@ theorem normalClosure_swap_mul_swap_five : exact mul_mem (subgroup.normal_closure_normal.conj_mem _ h g1) (inv_mem h) #align alternating_group.normal_closure_swap_mul_swap_five alternatingGroup.normalClosure_swap_mul_swap_five +/- warning: alternating_group.is_conj_swap_mul_swap_of_cycle_type_two -> alternatingGroup.isConj_swap_mul_swap_of_cycleType_two is a dubious translation: +lean 3 declaration is + forall {g : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))}, (Membership.Mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (SetLike.hasMem.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) g (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) -> (Ne.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) g (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) 1 (OfNat.mk.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) 1 (One.one.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (MulOneClass.toHasOne.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Equiv.Perm.permGroup.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))))) -> (forall (n : Nat), (Membership.Mem.{0, 0} Nat (Multiset.{0} Nat) (Multiset.hasMem.{0} Nat) n (Equiv.Perm.cycleType.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) g)) -> (Eq.{1} Nat n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) -> (IsConj.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (MulOneClass.toHasMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 0 (Zero.zero.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasZeroOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 4 (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (bit0.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 1 (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (OfNat.ofNat.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (OfNat.mk.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) 3 (bit1.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Fin.hasAdd (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (One.one.{0} (Fin (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Fin.hasOneOfNeZero (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (NeZero.succ (bit0.{0} Nat Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))))) g) +but is expected to have type + forall {g : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))}, (Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) g (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))) -> (Ne.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) g (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) 1 (One.toOfNat1.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (InvOneClass.toOne.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvOneMonoid.toInvOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivisionMonoid.toDivInvOneMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivisionMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))))) -> (forall (n : Nat), (Membership.mem.{0, 0} Nat (Multiset.{0} Nat) (Multiset.instMembershipMultiset.{0} Nat) n (Equiv.Perm.cycleType.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) g)) -> (Eq.{1} Nat n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) -> (IsConj.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) (HMul.hMul.{0, 0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (instHMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 4 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 4 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4)))))) (Equiv.swap.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))) (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) 3 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) 3 (NeZero.succ (OfNat.ofNat.{0} Nat 4 (instOfNatNat 4))))))) g) +Case conversion may be inaccurate. Consider using '#align alternating_group.is_conj_swap_mul_swap_of_cycle_type_two alternatingGroup.isConj_swap_mul_swap_of_cycleType_twoₓ'. -/ /-- Shows that any non-identity element of $A_5$ whose cycle decomposition consists only of swaps is conjugate to $(04)(13)$. This is used to show that the normal closure of such a permutation in $A_5$ is $A_5$. -/ @@ -314,6 +400,12 @@ theorem isConj_swap_mul_swap_of_cycleType_two {g : Perm (Fin 5)} (ha : g ∈ alt simp [h_1] #align alternating_group.is_conj_swap_mul_swap_of_cycle_type_two alternatingGroup.isConj_swap_mul_swap_of_cycleType_two +/- warning: alternating_group.is_simple_group_five -> alternatingGroup.isSimpleGroup_five is a dubious translation: +lean 3 declaration is + IsSimpleGroup.{0} (coeSort.{1, 2} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) Type (SetLike.hasCoeToSort.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Subgroup.setLike.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (OfNat.ofNat.{0} Nat 5 (OfNat.mk.{0} Nat 5 (bit1.{0} Nat Nat.hasOne Nat.hasAdd (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b))) +but is expected to have type + IsSimpleGroup.{0} (Subtype.{1} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (fun (x : Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) => Membership.mem.{0, 0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (SetLike.instMembership.{0, 0} (Subgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))))) (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Subgroup.instSetLikeSubgroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))))) x (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b)))) (Subgroup.toGroup.{0} (Equiv.Perm.{1} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (Equiv.Perm.permGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)))) (alternatingGroup.{0} (Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (Fin.fintype (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (fun (a : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) (b : Fin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5))) => instDecidableEqFin (OfNat.ofNat.{0} Nat 5 (instOfNatNat 5)) a b))) +Case conversion may be inaccurate. Consider using '#align alternating_group.is_simple_group_five alternatingGroup.isSimpleGroup_fiveₓ'. -/ /-- Shows that $A_5$ is simple by taking an arbitrary non-identity element and showing by casework on its cycle type that its normal closure is all of $A_5$. -/ instance isSimpleGroup_five : IsSimpleGroup (alternatingGroup (Fin 5)) := diff --git a/Mathbin/ModelTheory/Bundled.lean b/Mathbin/ModelTheory/Bundled.lean index b1073e8025..c5f1fccfc4 100644 --- a/Mathbin/ModelTheory/Bundled.lean +++ b/Mathbin/ModelTheory/Bundled.lean @@ -152,7 +152,7 @@ def reduct {L' : Language} (φ : L →ᴸ L') (M : (φ.onTheory T).ModelCat) : T carrier := M struc := φ.reduct M nonempty' := M.nonempty' - is_model := (@Lhom.onTheory_model L L' M (φ.reduct M) _ φ _ T).1 M.is_model + is_model := (@LHom.onTheory_model L L' M (φ.reduct M) _ φ _ T).1 M.is_model #align first_order.language.Theory.Model.reduct FirstOrder.Language.Theory.ModelCat.reduct /-- When `φ` is injective, `default_expansion` expands a model of `T` to a model of `φ.on_Theory T` @@ -167,16 +167,16 @@ noncomputable def defaultExpansion {L' : Language} {φ : L →ᴸ L'} (h : φ.In struc := φ.defaultExpansion M nonempty' := M.nonempty' is_model := - (@Lhom.onTheory_model L L' M _ (φ.defaultExpansion M) φ (h.isExpansionOn_default M) T).2 + (@LHom.onTheory_model L L' M _ (φ.defaultExpansion M) φ (h.isExpansionOn_default M) T).2 M.is_model #align first_order.language.Theory.Model.default_expansion FirstOrder.Language.Theory.ModelCat.defaultExpansion instance leftStructure {L' : Language} {T : (L.Sum L').Theory} (M : T.ModelCat) : L.Structure M := - (Lhom.sumInl : L →ᴸ L.Sum L').reduct M + (LHom.sumInl : L →ᴸ L.Sum L').reduct M #align first_order.language.Theory.Model.left_Structure FirstOrder.Language.Theory.ModelCat.leftStructure instance rightStructure {L' : Language} {T : (L.Sum L').Theory} (M : T.ModelCat) : L'.Structure M := - (Lhom.sumInr : L' →ᴸ L.Sum L').reduct M + (LHom.sumInr : L' →ᴸ L.Sum L').reduct M #align first_order.language.Theory.Model.right_Structure FirstOrder.Language.Theory.ModelCat.rightStructure /-- A model of a theory is also a model of any subtheory. -/ diff --git a/Mathbin/ModelTheory/LanguageMap.lean b/Mathbin/ModelTheory/LanguageMap.lean index 5872acab35..ba2e1b709f 100644 --- a/Mathbin/ModelTheory/LanguageMap.lean +++ b/Mathbin/ModelTheory/LanguageMap.lean @@ -46,20 +46,23 @@ open Cardinal variable (L : Language.{u, v}) (L' : Language.{u', v'}) {M : Type w} [L.Structure M] +#print FirstOrder.Language.LHom /- /-- A language homomorphism maps the symbols of one language to symbols of another. -/ -structure Lhom where +structure LHom where onFunction : ∀ ⦃n⦄, L.Functions n → L'.Functions n onRelation : ∀ ⦃n⦄, L.Relations n → L'.Relations n -#align first_order.language.Lhom FirstOrder.Language.Lhom +#align first_order.language.Lhom FirstOrder.Language.LHom +-/ -- mathport name: «expr →ᴸ » -infixl:10 " →ᴸ " => Lhom +infixl:10 " →ᴸ " => LHom -- \^L variable {L L'} namespace Lhom +#print FirstOrder.Language.LHom.mk₂ /- /-- Defines a map between languages defined with `language.mk₂`. -/ protected def mk₂ {c f₁ f₂ : Type u} {r₁ r₂ : Type v} (φ₀ : c → L'.Constants) (φ₁ : f₁ → L'.Functions 1) (φ₂ : f₂ → L'.Functions 2) (φ₁' : r₁ → L'.Relations 1) @@ -69,48 +72,60 @@ protected def mk₂ {c f₁ f₂ : Type u} {r₁ r₂ : Type v} (φ₀ : c → L fun n => Nat.casesOn n PEmpty.elim fun n => Nat.casesOn n φ₁' fun n => Nat.casesOn n φ₂' fun _ => PEmpty.elim⟩ -#align first_order.language.Lhom.mk₂ FirstOrder.Language.Lhom.mk₂ +#align first_order.language.Lhom.mk₂ FirstOrder.Language.LHom.mk₂ +-/ variable (ϕ : L →ᴸ L') +#print FirstOrder.Language.LHom.reduct /- /-- Pulls a structure back along a language map. -/ def reduct (M : Type _) [L'.Structure M] : L.Structure M where funMap n f xs := funMap (ϕ.onFunction f) xs rel_map n r xs := RelMap (ϕ.onRelation r) xs -#align first_order.language.Lhom.reduct FirstOrder.Language.Lhom.reduct +#align first_order.language.Lhom.reduct FirstOrder.Language.LHom.reduct +-/ +#print FirstOrder.Language.LHom.id /- /-- The identity language homomorphism. -/ @[simps] protected def id (L : Language) : L →ᴸ L := ⟨fun n => id, fun n => id⟩ -#align first_order.language.Lhom.id FirstOrder.Language.Lhom.id +#align first_order.language.Lhom.id FirstOrder.Language.LHom.id +-/ instance : Inhabited (L →ᴸ L) := - ⟨Lhom.id L⟩ + ⟨LHom.id L⟩ +#print FirstOrder.Language.LHom.sumInl /- /-- The inclusion of the left factor into the sum of two languages. -/ @[simps] protected def sumInl : L →ᴸ L.Sum L' := ⟨fun n => Sum.inl, fun n => Sum.inl⟩ -#align first_order.language.Lhom.sum_inl FirstOrder.Language.Lhom.sumInl +#align first_order.language.Lhom.sum_inl FirstOrder.Language.LHom.sumInl +-/ +#print FirstOrder.Language.LHom.sumInr /- /-- The inclusion of the right factor into the sum of two languages. -/ @[simps] protected def sumInr : L' →ᴸ L.Sum L' := ⟨fun n => Sum.inr, fun n => Sum.inr⟩ -#align first_order.language.Lhom.sum_inr FirstOrder.Language.Lhom.sumInr +#align first_order.language.Lhom.sum_inr FirstOrder.Language.LHom.sumInr +-/ variable (L L') +#print FirstOrder.Language.LHom.ofIsEmpty /- /-- The inclusion of an empty language into any other language. -/ @[simps] protected def ofIsEmpty [L.IsAlgebraic] [L.IsRelational] : L →ᴸ L' := ⟨fun n => (IsRelational.empty_functions n).elim, fun n => (IsAlgebraic.empty_relations n).elim⟩ -#align first_order.language.Lhom.of_is_empty FirstOrder.Language.Lhom.ofIsEmpty +#align first_order.language.Lhom.of_is_empty FirstOrder.Language.LHom.ofIsEmpty +-/ variable {L L'} {L'' : Language} +#print FirstOrder.Language.LHom.funext /- @[ext] protected theorem funext {F G : L →ᴸ L'} (h_fun : F.onFunction = G.onFunction) (h_rel : F.onRelation = G.onRelation) : F = G := @@ -119,11 +134,13 @@ protected theorem funext {F G : L →ᴸ L'} (h_fun : F.onFunction = G.onFunctio cases' G with Gf Gr simp only [*] exact And.intro h_fun h_rel -#align first_order.language.Lhom.funext FirstOrder.Language.Lhom.funext +#align first_order.language.Lhom.funext FirstOrder.Language.LHom.funext +-/ instance [L.IsAlgebraic] [L.IsRelational] : Unique (L →ᴸ L') := - ⟨⟨Lhom.ofIsEmpty L L'⟩, fun _ => Lhom.funext (Subsingleton.elim _ _) (Subsingleton.elim _ _)⟩ + ⟨⟨LHom.ofIsEmpty L L'⟩, fun _ => LHom.funext (Subsingleton.elim _ _) (Subsingleton.elim _ _)⟩ +#print FirstOrder.Language.LHom.mk₂_funext /- theorem mk₂_funext {c f₁ f₂ : Type u} {r₁ r₂ : Type v} {F G : Language.mk₂ c f₁ f₂ r₁ r₂ →ᴸ L'} (h0 : ∀ c : (Language.mk₂ c f₁ f₂ r₁ r₂).Constants, F.onFunction c = G.onFunction c) (h1 : ∀ f : (Language.mk₂ c f₁ f₂ r₁ r₂).Functions 1, F.onFunction f = G.onFunction f) @@ -131,7 +148,7 @@ theorem mk₂_funext {c f₁ f₂ : Type u} {r₁ r₂ : Type v} {F G : Language (h1' : ∀ r : (Language.mk₂ c f₁ f₂ r₁ r₂).Relations 1, F.onRelation r = G.onRelation r) (h2' : ∀ r : (Language.mk₂ c f₁ f₂ r₁ r₂).Relations 2, F.onRelation r = G.onRelation r) : F = G := - Lhom.funext + LHom.funext (funext fun n => Nat.casesOn n (funext h0) fun n => Nat.casesOn n (funext h1) fun n => @@ -140,63 +157,98 @@ theorem mk₂_funext {c f₁ f₂ : Type u} {r₁ r₂ : Type v} {F G : Language Nat.casesOn n (funext fun r => PEmpty.elim r) fun n => Nat.casesOn n (funext h1') fun n => Nat.casesOn n (funext h2') fun n => funext fun r => PEmpty.elim r) -#align first_order.language.Lhom.mk₂_funext FirstOrder.Language.Lhom.mk₂_funext +#align first_order.language.Lhom.mk₂_funext FirstOrder.Language.LHom.mk₂_funext +-/ +#print FirstOrder.Language.LHom.comp /- /-- The composition of two language homomorphisms. -/ @[simps] def comp (g : L' →ᴸ L'') (f : L →ᴸ L') : L →ᴸ L'' := ⟨fun n F => g.1 (f.1 F), fun _ R => g.2 (f.2 R)⟩ -#align first_order.language.Lhom.comp FirstOrder.Language.Lhom.comp +#align first_order.language.Lhom.comp FirstOrder.Language.LHom.comp +-/ -- mathport name: Lhom.comp -local infixl:60 " ∘ " => Lhom.comp +local infixl:60 " ∘ " => LHom.comp +#print FirstOrder.Language.LHom.id_comp /- @[simp] -theorem id_comp (F : L →ᴸ L') : Lhom.id L' ∘ F = F := +theorem id_comp (F : L →ᴸ L') : LHom.id L' ∘ F = F := by cases F rfl -#align first_order.language.Lhom.id_comp FirstOrder.Language.Lhom.id_comp +#align first_order.language.Lhom.id_comp FirstOrder.Language.LHom.id_comp +-/ +#print FirstOrder.Language.LHom.comp_id /- @[simp] -theorem comp_id (F : L →ᴸ L') : F ∘ Lhom.id L = F := +theorem comp_id (F : L →ᴸ L') : F ∘ LHom.id L = F := by cases F rfl -#align first_order.language.Lhom.comp_id FirstOrder.Language.Lhom.comp_id +#align first_order.language.Lhom.comp_id FirstOrder.Language.LHom.comp_id +-/ +/- warning: first_order.language.Lhom.comp_assoc -> FirstOrder.Language.LHom.comp_assoc is a dubious translation: +lean 3 declaration is + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u3, u4}} {L'' : FirstOrder.Language.{u5, u6}} {L3 : FirstOrder.Language.{u7, u8}} (F : FirstOrder.Language.LHom.{u5, u6, u7, u8} L'' L3) (G : FirstOrder.Language.LHom.{u3, u4, u5, u6} L' L'') (H : FirstOrder.Language.LHom.{u1, u2, u3, u4} L L'), Eq.{max (succ u1) (succ u7) (succ u2) (succ u8)} (FirstOrder.Language.LHom.{u1, u2, u7, u8} L L3) (FirstOrder.Language.LHom.comp.{u1, u2, u3, u4, u7, u8} L L' L3 (FirstOrder.Language.LHom.comp.{u3, u4, u5, u6, u7, u8} L' L'' L3 F G) H) (FirstOrder.Language.LHom.comp.{u1, u2, u5, u6, u7, u8} L L'' L3 F (FirstOrder.Language.LHom.comp.{u1, u2, u3, u4, u5, u6} L L' L'' G H)) +but is expected to have type + forall {L : FirstOrder.Language.{u5, u6}} {L' : FirstOrder.Language.{u7, u8}} {L'' : FirstOrder.Language.{u2, u1}} {L3 : FirstOrder.Language.{u4, u3}} (F : FirstOrder.Language.LHom.{u2, u1, u4, u3} L'' L3) (G : FirstOrder.Language.LHom.{u7, u8, u2, u1} L' L'') (H : FirstOrder.Language.LHom.{u5, u6, u7, u8} L L'), Eq.{max (max (max (succ u5) (succ u6)) (succ u3)) (succ u4)} (FirstOrder.Language.LHom.{u5, u6, u4, u3} L L3) (FirstOrder.Language.LHom.comp.{u5, u6, u7, u8, u4, u3} L L' L3 (FirstOrder.Language.LHom.comp.{u7, u8, u2, u1, u4, u3} L' L'' L3 F G) H) (FirstOrder.Language.LHom.comp.{u5, u6, u2, u1, u4, u3} L L'' L3 F (FirstOrder.Language.LHom.comp.{u5, u6, u7, u8, u2, u1} L L' L'' G H)) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.comp_assoc FirstOrder.Language.LHom.comp_assocₓ'. -/ theorem comp_assoc {L3 : Language} (F : L'' →ᴸ L3) (G : L' →ᴸ L'') (H : L →ᴸ L') : F ∘ G ∘ H = F ∘ (G ∘ H) := rfl -#align first_order.language.Lhom.comp_assoc FirstOrder.Language.Lhom.comp_assoc +#align first_order.language.Lhom.comp_assoc FirstOrder.Language.LHom.comp_assoc section SumElim variable (ψ : L'' →ᴸ L') +#print FirstOrder.Language.LHom.sumElim /- /-- A language map defined on two factors of a sum. -/ @[simps] protected def sumElim : L.Sum L'' →ᴸ L' where onFunction n := Sum.elim (fun f => ϕ.onFunction f) fun f => ψ.onFunction f onRelation n := Sum.elim (fun f => ϕ.onRelation f) fun f => ψ.onRelation f -#align first_order.language.Lhom.sum_elim FirstOrder.Language.Lhom.sumElim - -theorem sumElim_comp_inl (ψ : L'' →ᴸ L') : ϕ.sum_elim ψ ∘ Lhom.sumInl = ϕ := - Lhom.funext (funext fun _ => rfl) (funext fun _ => rfl) -#align first_order.language.Lhom.sum_elim_comp_inl FirstOrder.Language.Lhom.sumElim_comp_inl - -theorem sumElim_comp_inr (ψ : L'' →ᴸ L') : ϕ.sum_elim ψ ∘ Lhom.sumInr = ψ := - Lhom.funext (funext fun _ => rfl) (funext fun _ => rfl) -#align first_order.language.Lhom.sum_elim_comp_inr FirstOrder.Language.Lhom.sumElim_comp_inr +#align first_order.language.Lhom.sum_elim FirstOrder.Language.LHom.sumElim +-/ -theorem sumElim_inl_inr : Lhom.sumInl.sum_elim Lhom.sumInr = Lhom.id (L.Sum L') := - Lhom.funext (funext fun _ => Sum.elim_inl_inr) (funext fun _ => Sum.elim_inl_inr) -#align first_order.language.Lhom.sum_elim_inl_inr FirstOrder.Language.Lhom.sumElim_inl_inr +/- warning: first_order.language.Lhom.sum_elim_comp_inl -> FirstOrder.Language.LHom.sumElim_comp_inl is a dubious translation: +lean 3 declaration is + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u3, u4}} (ϕ : FirstOrder.Language.LHom.{u1, u2, u3, u4} L L') {L'' : FirstOrder.Language.{u5, u6}} (ψ : FirstOrder.Language.LHom.{u5, u6, u3, u4} L'' L'), Eq.{max (succ u1) (succ u3) (succ u2) (succ u4)} (FirstOrder.Language.LHom.{u1, u2, u3, u4} L L') (FirstOrder.Language.LHom.comp.{u1, u2, max u1 u5, max u2 u6, u3, u4} L (FirstOrder.Language.sum.{u1, u2, u5, u6} L L'') L' (FirstOrder.Language.LHom.sumElim.{u1, u2, u3, u4, u5, u6} L L' ϕ L'' ψ) (FirstOrder.Language.LHom.sumInl.{u1, u2, u5, u6} L L'')) ϕ +but is expected to have type + forall {L : FirstOrder.Language.{u3, u4}} {L' : FirstOrder.Language.{u5, u6}} (ϕ : FirstOrder.Language.LHom.{u3, u4, u5, u6} L L') {L'' : FirstOrder.Language.{u2, u1}} (ψ : FirstOrder.Language.LHom.{u2, u1, u5, u6} L'' L'), Eq.{max (max (max (succ u3) (succ u5)) (succ u4)) (succ u6)} (FirstOrder.Language.LHom.{u3, u4, u5, u6} L L') (FirstOrder.Language.LHom.comp.{u3, u4, max u3 u2, max u4 u1, u5, u6} L (FirstOrder.Language.sum.{u3, u4, u2, u1} L L'') L' (FirstOrder.Language.LHom.sumElim.{u3, u4, u5, u6, u2, u1} L L' ϕ L'' ψ) (FirstOrder.Language.LHom.sumInl.{u3, u4, u2, u1} L L'')) ϕ +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.sum_elim_comp_inl FirstOrder.Language.LHom.sumElim_comp_inlₓ'. -/ +theorem sumElim_comp_inl (ψ : L'' →ᴸ L') : ϕ.sum_elim ψ ∘ LHom.sumInl = ϕ := + LHom.funext (funext fun _ => rfl) (funext fun _ => rfl) +#align first_order.language.Lhom.sum_elim_comp_inl FirstOrder.Language.LHom.sumElim_comp_inl + +/- warning: first_order.language.Lhom.sum_elim_comp_inr -> FirstOrder.Language.LHom.sumElim_comp_inr is a dubious translation: +lean 3 declaration is + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u3, u4}} (ϕ : FirstOrder.Language.LHom.{u1, u2, u3, u4} L L') {L'' : FirstOrder.Language.{u5, u6}} (ψ : FirstOrder.Language.LHom.{u5, u6, u3, u4} L'' L'), Eq.{max (succ u5) (succ u3) (succ u6) (succ u4)} (FirstOrder.Language.LHom.{u5, u6, u3, u4} L'' L') (FirstOrder.Language.LHom.comp.{u5, u6, max u1 u5, max u2 u6, u3, u4} L'' (FirstOrder.Language.sum.{u1, u2, u5, u6} L L'') L' (FirstOrder.Language.LHom.sumElim.{u1, u2, u3, u4, u5, u6} L L' ϕ L'' ψ) (FirstOrder.Language.LHom.sumInr.{u1, u2, u5, u6} L L'')) ψ +but is expected to have type + forall {L : FirstOrder.Language.{u3, u4}} {L' : FirstOrder.Language.{u5, u6}} (ϕ : FirstOrder.Language.LHom.{u3, u4, u5, u6} L L') {L'' : FirstOrder.Language.{u2, u1}} (ψ : FirstOrder.Language.LHom.{u2, u1, u5, u6} L'' L'), Eq.{max (max (max (succ u5) (succ u6)) (succ u1)) (succ u2)} (FirstOrder.Language.LHom.{u2, u1, u5, u6} L'' L') (FirstOrder.Language.LHom.comp.{u2, u1, max u3 u2, max u4 u1, u5, u6} L'' (FirstOrder.Language.sum.{u3, u4, u2, u1} L L'') L' (FirstOrder.Language.LHom.sumElim.{u3, u4, u5, u6, u2, u1} L L' ϕ L'' ψ) (FirstOrder.Language.LHom.sumInr.{u3, u4, u2, u1} L L'')) ψ +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.sum_elim_comp_inr FirstOrder.Language.LHom.sumElim_comp_inrₓ'. -/ +theorem sumElim_comp_inr (ψ : L'' →ᴸ L') : ϕ.sum_elim ψ ∘ LHom.sumInr = ψ := + LHom.funext (funext fun _ => rfl) (funext fun _ => rfl) +#align first_order.language.Lhom.sum_elim_comp_inr FirstOrder.Language.LHom.sumElim_comp_inr + +#print FirstOrder.Language.LHom.sumElim_inl_inr /- +theorem sumElim_inl_inr : LHom.sumInl.sum_elim LHom.sumInr = LHom.id (L.Sum L') := + LHom.funext (funext fun _ => Sum.elim_inl_inr) (funext fun _ => Sum.elim_inl_inr) +#align first_order.language.Lhom.sum_elim_inl_inr FirstOrder.Language.LHom.sumElim_inl_inr +-/ +/- warning: first_order.language.Lhom.comp_sum_elim -> FirstOrder.Language.LHom.comp_sumElim is a dubious translation: +lean 3 declaration is + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u3, u4}} (ϕ : FirstOrder.Language.LHom.{u1, u2, u3, u4} L L') {L'' : FirstOrder.Language.{u5, u6}} (ψ : FirstOrder.Language.LHom.{u5, u6, u3, u4} L'' L') {L3 : FirstOrder.Language.{u7, u8}} (θ : FirstOrder.Language.LHom.{u3, u4, u7, u8} L' L3), Eq.{max (succ (max u1 u5)) (succ u7) (succ (max u2 u6)) (succ u8)} (FirstOrder.Language.LHom.{max u1 u5, max u2 u6, u7, u8} (FirstOrder.Language.sum.{u1, u2, u5, u6} L L'') L3) (FirstOrder.Language.LHom.comp.{max u1 u5, max u2 u6, u3, u4, u7, u8} (FirstOrder.Language.sum.{u1, u2, u5, u6} L L'') L' L3 θ (FirstOrder.Language.LHom.sumElim.{u1, u2, u3, u4, u5, u6} L L' ϕ L'' ψ)) (FirstOrder.Language.LHom.sumElim.{u1, u2, u7, u8, u5, u6} L L3 (FirstOrder.Language.LHom.comp.{u1, u2, u3, u4, u7, u8} L L' L3 θ ϕ) L'' (FirstOrder.Language.LHom.comp.{u5, u6, u3, u4, u7, u8} L'' L' L3 θ ψ)) +but is expected to have type + forall {L : FirstOrder.Language.{u5, u6}} {L' : FirstOrder.Language.{u7, u8}} (ϕ : FirstOrder.Language.LHom.{u5, u6, u7, u8} L L') {L'' : FirstOrder.Language.{u1, u2}} (ψ : FirstOrder.Language.LHom.{u1, u2, u7, u8} L'' L') {L3 : FirstOrder.Language.{u4, u3}} (θ : FirstOrder.Language.LHom.{u7, u8, u4, u3} L' L3), Eq.{max (max (max (max (max (succ u5) (succ u6)) (succ u2)) (succ u1)) (succ u3)) (succ u4)} (FirstOrder.Language.LHom.{max u5 u1, max u6 u2, u4, u3} (FirstOrder.Language.sum.{u5, u6, u1, u2} L L'') L3) (FirstOrder.Language.LHom.comp.{max u5 u1, max u6 u2, u7, u8, u4, u3} (FirstOrder.Language.sum.{u5, u6, u1, u2} L L'') L' L3 θ (FirstOrder.Language.LHom.sumElim.{u5, u6, u7, u8, u1, u2} L L' ϕ L'' ψ)) (FirstOrder.Language.LHom.sumElim.{u5, u6, u4, u3, u1, u2} L L3 (FirstOrder.Language.LHom.comp.{u5, u6, u7, u8, u4, u3} L L' L3 θ ϕ) L'' (FirstOrder.Language.LHom.comp.{u1, u2, u7, u8, u4, u3} L'' L' L3 θ ψ)) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.comp_sum_elim FirstOrder.Language.LHom.comp_sumElimₓ'. -/ theorem comp_sumElim {L3 : Language} (θ : L' →ᴸ L3) : θ ∘ ϕ.sum_elim ψ = (θ ∘ ϕ).sum_elim (θ ∘ ψ) := - Lhom.funext (funext fun n => Sum.comp_elim _ _ _) (funext fun n => Sum.comp_elim _ _ _) -#align first_order.language.Lhom.comp_sum_elim FirstOrder.Language.Lhom.comp_sumElim + LHom.funext (funext fun n => Sum.comp_elim _ _ _) (funext fun n => Sum.comp_elim _ _ _) +#align first_order.language.Lhom.comp_sum_elim FirstOrder.Language.LHom.comp_sumElim end SumElim @@ -204,32 +256,49 @@ section SumMap variable {L₁ L₂ : Language} (ψ : L₁ →ᴸ L₂) +#print FirstOrder.Language.LHom.sumMap /- /-- The map between two sum-languages induced by maps on the two factors. -/ @[simps] def sumMap : L.Sum L₁ →ᴸ L'.Sum L₂ where onFunction n := Sum.map (fun f => ϕ.onFunction f) fun f => ψ.onFunction f onRelation n := Sum.map (fun f => ϕ.onRelation f) fun f => ψ.onRelation f -#align first_order.language.Lhom.sum_map FirstOrder.Language.Lhom.sumMap +#align first_order.language.Lhom.sum_map FirstOrder.Language.LHom.sumMap +-/ +/- warning: first_order.language.Lhom.sum_map_comp_inl -> FirstOrder.Language.LHom.sumMap_comp_inl is a dubious translation: +lean 3 declaration is + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u3, u4}} (ϕ : FirstOrder.Language.LHom.{u1, u2, u3, u4} L L') {L₁ : FirstOrder.Language.{u5, u6}} {L₂ : FirstOrder.Language.{u7, u8}} (ψ : FirstOrder.Language.LHom.{u5, u6, u7, u8} L₁ L₂), Eq.{max (succ u1) (succ (max u3 u7)) (succ u2) (succ (max u4 u8))} (FirstOrder.Language.LHom.{u1, u2, max u3 u7, max u4 u8} L (FirstOrder.Language.sum.{u3, u4, u7, u8} L' L₂)) (FirstOrder.Language.LHom.comp.{u1, u2, max u1 u5, max u2 u6, max u3 u7, max u4 u8} L (FirstOrder.Language.sum.{u1, u2, u5, u6} L L₁) (FirstOrder.Language.sum.{u3, u4, u7, u8} L' L₂) (FirstOrder.Language.LHom.sumMap.{u1, u2, u3, u4, u5, u6, u7, u8} L L' ϕ L₁ L₂ ψ) (FirstOrder.Language.LHom.sumInl.{u1, u2, u5, u6} L L₁)) (FirstOrder.Language.LHom.comp.{u1, u2, u3, u4, max u3 u7, max u4 u8} L L' (FirstOrder.Language.sum.{u3, u4, u7, u8} L' L₂) (FirstOrder.Language.LHom.sumInl.{u3, u4, u7, u8} L' L₂) ϕ) +but is expected to have type + forall {L : FirstOrder.Language.{u5, u6}} {L' : FirstOrder.Language.{u7, u8}} (ϕ : FirstOrder.Language.LHom.{u5, u6, u7, u8} L L') {L₁ : FirstOrder.Language.{u2, u1}} {L₂ : FirstOrder.Language.{u3, u4}} (ψ : FirstOrder.Language.LHom.{u2, u1, u3, u4} L₁ L₂), Eq.{max (max (max (max (max (succ u5) (succ u7)) (succ u6)) (succ u8)) (succ u4)) (succ u3)} (FirstOrder.Language.LHom.{u5, u6, max u7 u3, max u8 u4} L (FirstOrder.Language.sum.{u7, u8, u3, u4} L' L₂)) (FirstOrder.Language.LHom.comp.{u5, u6, max u5 u2, max u6 u1, max u7 u3, max u8 u4} L (FirstOrder.Language.sum.{u5, u6, u2, u1} L L₁) (FirstOrder.Language.sum.{u7, u8, u3, u4} L' L₂) (FirstOrder.Language.LHom.sumMap.{u5, u6, u7, u8, u2, u1, u3, u4} L L' ϕ L₁ L₂ ψ) (FirstOrder.Language.LHom.sumInl.{u5, u6, u2, u1} L L₁)) (FirstOrder.Language.LHom.comp.{u5, u6, u7, u8, max u3 u7, max u4 u8} L L' (FirstOrder.Language.sum.{u7, u8, u3, u4} L' L₂) (FirstOrder.Language.LHom.sumInl.{u7, u8, u3, u4} L' L₂) ϕ) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.sum_map_comp_inl FirstOrder.Language.LHom.sumMap_comp_inlₓ'. -/ @[simp] -theorem sumMap_comp_inl : ϕ.sum_map ψ ∘ Lhom.sumInl = Lhom.sumInl ∘ ϕ := - Lhom.funext (funext fun _ => rfl) (funext fun _ => rfl) -#align first_order.language.Lhom.sum_map_comp_inl FirstOrder.Language.Lhom.sumMap_comp_inl - +theorem sumMap_comp_inl : ϕ.sum_map ψ ∘ LHom.sumInl = LHom.sumInl ∘ ϕ := + LHom.funext (funext fun _ => rfl) (funext fun _ => rfl) +#align first_order.language.Lhom.sum_map_comp_inl FirstOrder.Language.LHom.sumMap_comp_inl + +/- warning: first_order.language.Lhom.sum_map_comp_inr -> FirstOrder.Language.LHom.sumMap_comp_inr is a dubious translation: +lean 3 declaration is + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u3, u4}} (ϕ : FirstOrder.Language.LHom.{u1, u2, u3, u4} L L') {L₁ : FirstOrder.Language.{u5, u6}} {L₂ : FirstOrder.Language.{u7, u8}} (ψ : FirstOrder.Language.LHom.{u5, u6, u7, u8} L₁ L₂), Eq.{max (succ u5) (succ (max u3 u7)) (succ u6) (succ (max u4 u8))} (FirstOrder.Language.LHom.{u5, u6, max u3 u7, max u4 u8} L₁ (FirstOrder.Language.sum.{u3, u4, u7, u8} L' L₂)) (FirstOrder.Language.LHom.comp.{u5, u6, max u1 u5, max u2 u6, max u3 u7, max u4 u8} L₁ (FirstOrder.Language.sum.{u1, u2, u5, u6} L L₁) (FirstOrder.Language.sum.{u3, u4, u7, u8} L' L₂) (FirstOrder.Language.LHom.sumMap.{u1, u2, u3, u4, u5, u6, u7, u8} L L' ϕ L₁ L₂ ψ) (FirstOrder.Language.LHom.sumInr.{u1, u2, u5, u6} L L₁)) (FirstOrder.Language.LHom.comp.{u5, u6, u7, u8, max u3 u7, max u4 u8} L₁ L₂ (FirstOrder.Language.sum.{u3, u4, u7, u8} L' L₂) (FirstOrder.Language.LHom.sumInr.{u3, u4, u7, u8} L' L₂) ψ) +but is expected to have type + forall {L : FirstOrder.Language.{u5, u6}} {L' : FirstOrder.Language.{u7, u8}} (ϕ : FirstOrder.Language.LHom.{u5, u6, u7, u8} L L') {L₁ : FirstOrder.Language.{u3, u4}} {L₂ : FirstOrder.Language.{u1, u2}} (ψ : FirstOrder.Language.LHom.{u3, u4, u1, u2} L₁ L₂), Eq.{max (max (max (max (max (succ u7) (succ u8)) (succ u4)) (succ u3)) (succ u2)) (succ u1)} (FirstOrder.Language.LHom.{u3, u4, max u7 u1, max u8 u2} L₁ (FirstOrder.Language.sum.{u7, u8, u1, u2} L' L₂)) (FirstOrder.Language.LHom.comp.{u3, u4, max u5 u3, max u6 u4, max u7 u1, max u8 u2} L₁ (FirstOrder.Language.sum.{u5, u6, u3, u4} L L₁) (FirstOrder.Language.sum.{u7, u8, u1, u2} L' L₂) (FirstOrder.Language.LHom.sumMap.{u5, u6, u7, u8, u3, u4, u1, u2} L L' ϕ L₁ L₂ ψ) (FirstOrder.Language.LHom.sumInr.{u5, u6, u3, u4} L L₁)) (FirstOrder.Language.LHom.comp.{u3, u4, u1, u2, max u1 u7, max u2 u8} L₁ L₂ (FirstOrder.Language.sum.{u7, u8, u1, u2} L' L₂) (FirstOrder.Language.LHom.sumInr.{u7, u8, u1, u2} L' L₂) ψ) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.sum_map_comp_inr FirstOrder.Language.LHom.sumMap_comp_inrₓ'. -/ @[simp] -theorem sumMap_comp_inr : ϕ.sum_map ψ ∘ Lhom.sumInr = Lhom.sumInr ∘ ψ := - Lhom.funext (funext fun _ => rfl) (funext fun _ => rfl) -#align first_order.language.Lhom.sum_map_comp_inr FirstOrder.Language.Lhom.sumMap_comp_inr +theorem sumMap_comp_inr : ϕ.sum_map ψ ∘ LHom.sumInr = LHom.sumInr ∘ ψ := + LHom.funext (funext fun _ => rfl) (funext fun _ => rfl) +#align first_order.language.Lhom.sum_map_comp_inr FirstOrder.Language.LHom.sumMap_comp_inr end SumMap +#print FirstOrder.Language.LHom.Injective /- /-- A language homomorphism is injective when all the maps between symbol types are. -/ protected structure Injective : Prop where onFunction {n} : Function.Injective fun f : L.Functions n => onFunction ϕ f onRelation {n} : Function.Injective fun R : L.Relations n => onRelation ϕ R -#align first_order.language.Lhom.injective FirstOrder.Language.Lhom.Injective +#align first_order.language.Lhom.injective FirstOrder.Language.LHom.Injective +-/ +#print FirstOrder.Language.LHom.defaultExpansion /- /-- Pulls a `L`-structure along a language map `ϕ : L →ᴸ L'`, and then expands it to an `L'`-structure arbitrarily. -/ noncomputable def defaultExpansion (ϕ : L →ᴸ L') @@ -243,84 +312,127 @@ noncomputable def defaultExpansion (ϕ : L →ᴸ L') rel_map n r xs := if h' : r ∈ Set.range fun r : L.Relations n => onRelation ϕ r then RelMap h'.some xs else default -#align first_order.language.Lhom.default_expansion FirstOrder.Language.Lhom.defaultExpansion +#align first_order.language.Lhom.default_expansion FirstOrder.Language.LHom.defaultExpansion +-/ +#print FirstOrder.Language.LHom.IsExpansionOn /- /-- A language homomorphism is an expansion on a structure if it commutes with the interpretation of all symbols on that structure. -/ class IsExpansionOn (M : Type _) [L.Structure M] [L'.Structure M] : Prop where map_onFunction : ∀ {n} (f : L.Functions n) (x : Fin n → M), funMap (ϕ.onFunction f) x = funMap f x map_onRelation : ∀ {n} (R : L.Relations n) (x : Fin n → M), RelMap (ϕ.onRelation R) x = RelMap R x -#align first_order.language.Lhom.is_expansion_on FirstOrder.Language.Lhom.IsExpansionOn +#align first_order.language.Lhom.is_expansion_on FirstOrder.Language.LHom.IsExpansionOn +-/ +/- warning: first_order.language.Lhom.map_on_function -> FirstOrder.Language.LHom.map_onFunction is a dubious translation: +lean 3 declaration is + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u3, u4}} (ϕ : FirstOrder.Language.LHom.{u1, u2, u3, u4} L L') {M : Type.{u5}} [_inst_2 : FirstOrder.Language.Structure.{u1, u2, u5} L M] [_inst_3 : FirstOrder.Language.Structure.{u3, u4, u5} L' M] [_inst_4 : FirstOrder.Language.LHom.IsExpansionOn.{u1, u2, u3, u4, u5} L L' ϕ M _inst_2 _inst_3] {n : Nat} (f : FirstOrder.Language.Functions.{u1, u2} L n) (x : (Fin n) -> M), Eq.{succ u5} M (FirstOrder.Language.Structure.funMap.{u3, u4, u5} L' M _inst_3 n (FirstOrder.Language.LHom.onFunction.{u1, u2, u3, u4} L L' ϕ n f) x) (FirstOrder.Language.Structure.funMap.{u1, u2, u5} L M _inst_2 n f x) +but is expected to have type + forall {L : FirstOrder.Language.{u2, u3}} {L' : FirstOrder.Language.{u4, u5}} (ϕ : FirstOrder.Language.LHom.{u2, u3, u4, u5} L L') {M : Type.{u1}} [_inst_2 : FirstOrder.Language.Structure.{u2, u3, u1} L M] [_inst_3 : FirstOrder.Language.Structure.{u4, u5, u1} L' M] [_inst_4 : FirstOrder.Language.LHom.IsExpansionOn.{u2, u3, u4, u5, u1} L L' ϕ M _inst_2 _inst_3] {n : Nat} (f : FirstOrder.Language.Functions.{u2, u3} L n) (x : (Fin n) -> M), Eq.{succ u1} M (FirstOrder.Language.Structure.funMap.{u4, u5, u1} L' M _inst_3 n (FirstOrder.Language.LHom.onFunction.{u2, u3, u4, u5} L L' ϕ n f) x) (FirstOrder.Language.Structure.funMap.{u2, u3, u1} L M _inst_2 n f x) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.map_on_function FirstOrder.Language.LHom.map_onFunctionₓ'. -/ @[simp] theorem map_onFunction {M : Type _} [L.Structure M] [L'.Structure M] [ϕ.IsExpansionOn M] {n} (f : L.Functions n) (x : Fin n → M) : funMap (ϕ.onFunction f) x = funMap f x := IsExpansionOn.map_onFunction f x -#align first_order.language.Lhom.map_on_function FirstOrder.Language.Lhom.map_onFunction - +#align first_order.language.Lhom.map_on_function FirstOrder.Language.LHom.map_onFunction + +/- warning: first_order.language.Lhom.map_on_relation -> FirstOrder.Language.LHom.map_onRelation is a dubious translation: +lean 3 declaration is + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u3, u4}} (ϕ : FirstOrder.Language.LHom.{u1, u2, u3, u4} L L') {M : Type.{u5}} [_inst_2 : FirstOrder.Language.Structure.{u1, u2, u5} L M] [_inst_3 : FirstOrder.Language.Structure.{u3, u4, u5} L' M] [_inst_4 : FirstOrder.Language.LHom.IsExpansionOn.{u1, u2, u3, u4, u5} L L' ϕ M _inst_2 _inst_3] {n : Nat} (R : FirstOrder.Language.Relations.{u1, u2} L n) (x : (Fin n) -> M), Eq.{1} Prop (FirstOrder.Language.Structure.RelMap.{u3, u4, u5} L' M _inst_3 n (FirstOrder.Language.LHom.onRelation.{u1, u2, u3, u4} L L' ϕ n R) x) (FirstOrder.Language.Structure.RelMap.{u1, u2, u5} L M _inst_2 n R x) +but is expected to have type + forall {L : FirstOrder.Language.{u2, u3}} {L' : FirstOrder.Language.{u4, u5}} (ϕ : FirstOrder.Language.LHom.{u2, u3, u4, u5} L L') {M : Type.{u1}} [_inst_2 : FirstOrder.Language.Structure.{u2, u3, u1} L M] [_inst_3 : FirstOrder.Language.Structure.{u4, u5, u1} L' M] [_inst_4 : FirstOrder.Language.LHom.IsExpansionOn.{u2, u3, u4, u5, u1} L L' ϕ M _inst_2 _inst_3] {n : Nat} (R : FirstOrder.Language.Relations.{u2, u3} L n) (x : (Fin n) -> M), Eq.{1} Prop (FirstOrder.Language.Structure.rel_map.{u4, u5, u1} L' M _inst_3 n (FirstOrder.Language.LHom.onRelation.{u2, u3, u4, u5} L L' ϕ n R) x) (FirstOrder.Language.Structure.rel_map.{u2, u3, u1} L M _inst_2 n R x) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.map_on_relation FirstOrder.Language.LHom.map_onRelationₓ'. -/ @[simp] theorem map_onRelation {M : Type _} [L.Structure M] [L'.Structure M] [ϕ.IsExpansionOn M] {n} (R : L.Relations n) (x : Fin n → M) : RelMap (ϕ.onRelation R) x = RelMap R x := IsExpansionOn.map_onRelation R x -#align first_order.language.Lhom.map_on_relation FirstOrder.Language.Lhom.map_onRelation +#align first_order.language.Lhom.map_on_relation FirstOrder.Language.LHom.map_onRelation -instance id_isExpansionOn (M : Type _) [L.Structure M] : IsExpansionOn (Lhom.id L) M := +#print FirstOrder.Language.LHom.id_isExpansionOn /- +instance id_isExpansionOn (M : Type _) [L.Structure M] : IsExpansionOn (LHom.id L) M := ⟨fun _ _ _ => rfl, fun _ _ _ => rfl⟩ -#align first_order.language.Lhom.id_is_expansion_on FirstOrder.Language.Lhom.id_isExpansionOn +#align first_order.language.Lhom.id_is_expansion_on FirstOrder.Language.LHom.id_isExpansionOn +-/ +#print FirstOrder.Language.LHom.ofIsEmpty_isExpansionOn /- instance ofIsEmpty_isExpansionOn (M : Type _) [L.Structure M] [L'.Structure M] [L.IsAlgebraic] - [L.IsRelational] : IsExpansionOn (Lhom.ofIsEmpty L L') M := + [L.IsRelational] : IsExpansionOn (LHom.ofIsEmpty L L') M := ⟨fun n => (IsRelational.empty_functions n).elim, fun n => (IsAlgebraic.empty_relations n).elim⟩ -#align first_order.language.Lhom.of_is_empty_is_expansion_on FirstOrder.Language.Lhom.ofIsEmpty_isExpansionOn +#align first_order.language.Lhom.of_is_empty_is_expansion_on FirstOrder.Language.LHom.ofIsEmpty_isExpansionOn +-/ +#print FirstOrder.Language.LHom.sumElim_isExpansionOn /- instance sumElim_isExpansionOn {L'' : Language} (ψ : L'' →ᴸ L') (M : Type _) [L.Structure M] [L'.Structure M] [L''.Structure M] [ϕ.IsExpansionOn M] [ψ.IsExpansionOn M] : (ϕ.sum_elim ψ).IsExpansionOn M := ⟨fun _ f _ => Sum.casesOn f (by simp) (by simp), fun _ R _ => Sum.casesOn R (by simp) (by simp)⟩ -#align first_order.language.Lhom.sum_elim_is_expansion_on FirstOrder.Language.Lhom.sumElim_isExpansionOn +#align first_order.language.Lhom.sum_elim_is_expansion_on FirstOrder.Language.LHom.sumElim_isExpansionOn +-/ +#print FirstOrder.Language.LHom.sumMap_isExpansionOn /- instance sumMap_isExpansionOn {L₁ L₂ : Language} (ψ : L₁ →ᴸ L₂) (M : Type _) [L.Structure M] [L'.Structure M] [L₁.Structure M] [L₂.Structure M] [ϕ.IsExpansionOn M] [ψ.IsExpansionOn M] : (ϕ.sum_map ψ).IsExpansionOn M := ⟨fun _ f _ => Sum.casesOn f (by simp) (by simp), fun _ R _ => Sum.casesOn R (by simp) (by simp)⟩ -#align first_order.language.Lhom.sum_map_is_expansion_on FirstOrder.Language.Lhom.sumMap_isExpansionOn +#align first_order.language.Lhom.sum_map_is_expansion_on FirstOrder.Language.LHom.sumMap_isExpansionOn +-/ +#print FirstOrder.Language.LHom.sumInl_isExpansionOn /- instance sumInl_isExpansionOn (M : Type _) [L.Structure M] [L'.Structure M] : - (Lhom.sumInl : L →ᴸ L.Sum L').IsExpansionOn M := + (LHom.sumInl : L →ᴸ L.Sum L').IsExpansionOn M := ⟨fun _ f _ => rfl, fun _ R _ => rfl⟩ -#align first_order.language.Lhom.sum_inl_is_expansion_on FirstOrder.Language.Lhom.sumInl_isExpansionOn +#align first_order.language.Lhom.sum_inl_is_expansion_on FirstOrder.Language.LHom.sumInl_isExpansionOn +-/ +#print FirstOrder.Language.LHom.sumInr_isExpansionOn /- instance sumInr_isExpansionOn (M : Type _) [L.Structure M] [L'.Structure M] : - (Lhom.sumInr : L' →ᴸ L.Sum L').IsExpansionOn M := + (LHom.sumInr : L' →ᴸ L.Sum L').IsExpansionOn M := ⟨fun _ f _ => rfl, fun _ R _ => rfl⟩ -#align first_order.language.Lhom.sum_inr_is_expansion_on FirstOrder.Language.Lhom.sumInr_isExpansionOn +#align first_order.language.Lhom.sum_inr_is_expansion_on FirstOrder.Language.LHom.sumInr_isExpansionOn +-/ +#print FirstOrder.Language.LHom.funMap_sumInl /- @[simp] -theorem funMap_sumInl [(L.Sum L').Structure M] [(Lhom.sumInl : L →ᴸ L.Sum L').IsExpansionOn M] {n} +theorem funMap_sumInl [(L.Sum L').Structure M] [(LHom.sumInl : L →ᴸ L.Sum L').IsExpansionOn M] {n} {f : L.Functions n} {x : Fin n → M} : @funMap (L.Sum L') M _ n (Sum.inl f) x = funMap f x := - (Lhom.sumInl : L →ᴸ L.Sum L').map_onFunction f x -#align first_order.language.Lhom.fun_map_sum_inl FirstOrder.Language.Lhom.funMap_sumInl + (LHom.sumInl : L →ᴸ L.Sum L').map_onFunction f x +#align first_order.language.Lhom.fun_map_sum_inl FirstOrder.Language.LHom.funMap_sumInl +-/ +#print FirstOrder.Language.LHom.funMap_sumInr /- @[simp] -theorem funMap_sumInr [(L'.Sum L).Structure M] [(Lhom.sumInr : L →ᴸ L'.Sum L).IsExpansionOn M] {n} +theorem funMap_sumInr [(L'.Sum L).Structure M] [(LHom.sumInr : L →ᴸ L'.Sum L).IsExpansionOn M] {n} {f : L.Functions n} {x : Fin n → M} : @funMap (L'.Sum L) M _ n (Sum.inr f) x = funMap f x := - (Lhom.sumInr : L →ᴸ L'.Sum L).map_onFunction f x -#align first_order.language.Lhom.fun_map_sum_inr FirstOrder.Language.Lhom.funMap_sumInr + (LHom.sumInr : L →ᴸ L'.Sum L).map_onFunction f x +#align first_order.language.Lhom.fun_map_sum_inr FirstOrder.Language.LHom.funMap_sumInr +-/ -theorem sumInl_injective : (Lhom.sumInl : L →ᴸ L.Sum L').Injective := +#print FirstOrder.Language.LHom.sumInl_injective /- +theorem sumInl_injective : (LHom.sumInl : L →ᴸ L.Sum L').Injective := ⟨fun n => Sum.inl_injective, fun n => Sum.inl_injective⟩ -#align first_order.language.Lhom.sum_inl_injective FirstOrder.Language.Lhom.sumInl_injective +#align first_order.language.Lhom.sum_inl_injective FirstOrder.Language.LHom.sumInl_injective +-/ -theorem sumInr_injective : (Lhom.sumInr : L' →ᴸ L.Sum L').Injective := +#print FirstOrder.Language.LHom.sumInr_injective /- +theorem sumInr_injective : (LHom.sumInr : L' →ᴸ L.Sum L').Injective := ⟨fun n => Sum.inr_injective, fun n => Sum.inr_injective⟩ -#align first_order.language.Lhom.sum_inr_injective FirstOrder.Language.Lhom.sumInr_injective +#align first_order.language.Lhom.sum_inr_injective FirstOrder.Language.LHom.sumInr_injective +-/ +#print FirstOrder.Language.LHom.isExpansionOn_reduct /- instance (priority := 100) isExpansionOn_reduct (ϕ : L →ᴸ L') (M : Type _) [L'.Structure M] : @IsExpansionOn L L' ϕ M (ϕ.reduct M) _ := letI := ϕ.reduct M ⟨fun _ f _ => rfl, fun _ R _ => rfl⟩ -#align first_order.language.Lhom.is_expansion_on_reduct FirstOrder.Language.Lhom.isExpansionOn_reduct +#align first_order.language.Lhom.is_expansion_on_reduct FirstOrder.Language.LHom.isExpansionOn_reduct +-/ +/- warning: first_order.language.Lhom.injective.is_expansion_on_default -> FirstOrder.Language.LHom.Injective.isExpansionOn_default is a dubious translation: +lean 3 declaration is + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u3, u4}} {ϕ : FirstOrder.Language.LHom.{u1, u2, u3, u4} L L'} [_inst_2 : forall (n : Nat) (f : FirstOrder.Language.Functions.{u3, u4} L' n), Decidable (Membership.Mem.{u3, u3} (FirstOrder.Language.Functions.{u3, u4} L' n) (Set.{u3} (FirstOrder.Language.Functions.{u3, u4} L' n)) (Set.hasMem.{u3} (FirstOrder.Language.Functions.{u3, u4} L' n)) f (Set.range.{u3, succ u1} (FirstOrder.Language.Functions.{u3, u4} L' n) (FirstOrder.Language.Functions.{u1, u2} L n) (fun (f : FirstOrder.Language.Functions.{u1, u2} L n) => FirstOrder.Language.LHom.onFunction.{u1, u2, u3, u4} L L' ϕ n f)))] [_inst_3 : forall (n : Nat) (r : FirstOrder.Language.Relations.{u3, u4} L' n), Decidable (Membership.Mem.{u4, u4} (FirstOrder.Language.Relations.{u3, u4} L' n) (Set.{u4} (FirstOrder.Language.Relations.{u3, u4} L' n)) (Set.hasMem.{u4} (FirstOrder.Language.Relations.{u3, u4} L' n)) r (Set.range.{u4, succ u2} (FirstOrder.Language.Relations.{u3, u4} L' n) (FirstOrder.Language.Relations.{u1, u2} L n) (fun (r : FirstOrder.Language.Relations.{u1, u2} L n) => FirstOrder.Language.LHom.onRelation.{u1, u2, u3, u4} L L' ϕ n r)))], (FirstOrder.Language.LHom.Injective.{u1, u2, u3, u4} L L' ϕ) -> (forall (M : Type.{u5}) [_inst_4 : Inhabited.{succ u5} M] [_inst_5 : FirstOrder.Language.Structure.{u1, u2, u5} L M], FirstOrder.Language.LHom.IsExpansionOn.{u1, u2, u3, u4, u5} L L' ϕ M _inst_5 (FirstOrder.Language.LHom.defaultExpansion.{u1, u2, u3, u4, u5} L L' ϕ (fun (n : Nat) (f : FirstOrder.Language.Functions.{u3, u4} L' n) => _inst_2 n f) (fun (n : Nat) (r : FirstOrder.Language.Relations.{u3, u4} L' n) => _inst_3 n r) M _inst_4 _inst_5)) +but is expected to have type + forall {L : FirstOrder.Language.{u2, u3}} {L' : FirstOrder.Language.{u4, u5}} {ϕ : FirstOrder.Language.LHom.{u2, u3, u4, u5} L L'} [_inst_2 : forall (n : Nat) (f : FirstOrder.Language.Functions.{u4, u5} L' n), Decidable (Membership.mem.{u4, u4} (FirstOrder.Language.Functions.{u4, u5} L' n) (Set.{u4} (FirstOrder.Language.Functions.{u4, u5} L' n)) (Set.instMembershipSet.{u4} (FirstOrder.Language.Functions.{u4, u5} L' n)) f (Set.range.{u4, succ u2} (FirstOrder.Language.Functions.{u4, u5} L' n) (FirstOrder.Language.Functions.{u2, u3} L n) (fun (f : FirstOrder.Language.Functions.{u2, u3} L n) => FirstOrder.Language.LHom.onFunction.{u2, u3, u4, u5} L L' ϕ n f)))] [_inst_3 : forall (n : Nat) (r : FirstOrder.Language.Relations.{u4, u5} L' n), Decidable (Membership.mem.{u5, u5} (FirstOrder.Language.Relations.{u4, u5} L' n) (Set.{u5} (FirstOrder.Language.Relations.{u4, u5} L' n)) (Set.instMembershipSet.{u5} (FirstOrder.Language.Relations.{u4, u5} L' n)) r (Set.range.{u5, succ u3} (FirstOrder.Language.Relations.{u4, u5} L' n) (FirstOrder.Language.Relations.{u2, u3} L n) (fun (r : FirstOrder.Language.Relations.{u2, u3} L n) => FirstOrder.Language.LHom.onRelation.{u2, u3, u4, u5} L L' ϕ n r)))], (FirstOrder.Language.LHom.Injective.{u2, u3, u4, u5} L L' ϕ) -> (forall (M : Type.{u1}) [_inst_4 : Inhabited.{succ u1} M] [_inst_5 : FirstOrder.Language.Structure.{u2, u3, u1} L M], FirstOrder.Language.LHom.IsExpansionOn.{u2, u3, u4, u5, u1} L L' ϕ M _inst_5 (FirstOrder.Language.LHom.defaultExpansion.{u2, u3, u4, u5, u1} L L' ϕ (fun (n : Nat) (f : FirstOrder.Language.Functions.{u4, u5} L' n) => _inst_2 n f) (fun (n : Nat) (r : FirstOrder.Language.Relations.{u4, u5} L' n) => _inst_3 n r) M _inst_4 _inst_5)) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.injective.is_expansion_on_default FirstOrder.Language.LHom.Injective.isExpansionOn_defaultₓ'. -/ theorem Injective.isExpansionOn_default {ϕ : L →ᴸ L'} [∀ (n) (f : L'.Functions n), Decidable (f ∈ Set.range fun f : L.Functions n => onFunction ϕ f)] [∀ (n) (r : L'.Relations n), Decidable (r ∈ Set.range fun r : L.Relations n => onRelation ϕ r)] @@ -335,7 +447,7 @@ theorem Injective.isExpansionOn_default {ϕ : L →ᴸ L'} · have hr : ϕ.on_relation r ∈ Set.range fun r : L.relations n => ϕ.on_relation r := ⟨r, rfl⟩ refine' (dif_pos hr).trans _ rw [h.on_relation hr.some_spec] -#align first_order.language.Lhom.injective.is_expansion_on_default FirstOrder.Language.Lhom.Injective.isExpansionOn_default +#align first_order.language.Lhom.injective.is_expansion_on_default FirstOrder.Language.LHom.Injective.isExpansionOn_default end Lhom @@ -343,8 +455,8 @@ end Lhom structure Lequiv (L L' : Language) where toLhom : L →ᴸ L' invLhom : L' →ᴸ L - left_inv : inv_Lhom.comp to_Lhom = Lhom.id L - right_inv : to_Lhom.comp inv_Lhom = Lhom.id L' + left_inv : inv_Lhom.comp to_Lhom = LHom.id L + right_inv : to_Lhom.comp inv_Lhom = LHom.id L' #align first_order.language.Lequiv FirstOrder.Language.Lequiv -- mathport name: «expr ≃ᴸ » @@ -358,7 +470,7 @@ variable (L) /-- The identity equivalence from a first-order language to itself. -/ @[simps] protected def refl : L ≃ᴸ L := - ⟨Lhom.id L, Lhom.id L, Lhom.id_comp _, Lhom.id_comp _⟩ + ⟨LHom.id L, LHom.id L, LHom.id_comp _, LHom.id_comp _⟩ #align first_order.language.Lequiv.refl FirstOrder.Language.Lequiv.refl variable {L} @@ -388,47 +500,64 @@ section ConstantsOn variable (α : Type u') +#print FirstOrder.Language.constantsOn /- /-- A language with constants indexed by a type. -/ @[simp] def constantsOn : Language.{u', 0} := Language.mk₂ α PEmpty PEmpty PEmpty PEmpty #align first_order.language.constants_on FirstOrder.Language.constantsOn +-/ variable {α} +#print FirstOrder.Language.constantsOn_constants /- theorem constantsOn_constants : (constantsOn α).Constants = α := rfl #align first_order.language.constants_on_constants FirstOrder.Language.constantsOn_constants +-/ +#print FirstOrder.Language.isAlgebraic_constantsOn /- instance isAlgebraic_constantsOn : IsAlgebraic (constantsOn α) := Language.isAlgebraic_mk₂ #align first_order.language.is_algebraic_constants_on FirstOrder.Language.isAlgebraic_constantsOn +-/ +#print FirstOrder.Language.isRelational_constantsOn /- instance isRelational_constantsOn [ie : IsEmpty α] : IsRelational (constantsOn α) := Language.isRelational_mk₂ #align first_order.language.is_relational_constants_on FirstOrder.Language.isRelational_constantsOn +-/ +#print FirstOrder.Language.isEmpty_functions_constantsOn_succ /- instance isEmpty_functions_constantsOn_succ {n : ℕ} : IsEmpty ((constantsOn α).Functions (n + 1)) := Nat.casesOn n PEmpty.isEmpty fun n => Nat.casesOn n PEmpty.isEmpty fun _ => PEmpty.isEmpty #align first_order.language.is_empty_functions_constants_on_succ FirstOrder.Language.isEmpty_functions_constantsOn_succ +-/ +#print FirstOrder.Language.card_constantsOn /- theorem card_constantsOn : (constantsOn α).card = (#α) := by simp #align first_order.language.card_constants_on FirstOrder.Language.card_constantsOn +-/ +#print FirstOrder.Language.constantsOn.structure /- /-- Gives a `constants_on α` structure to a type by assigning each constant a value. -/ def constantsOn.structure (f : α → M) : (constantsOn α).Structure M := Structure.mk₂ f PEmpty.elim PEmpty.elim PEmpty.elim PEmpty.elim #align first_order.language.constants_on.Structure FirstOrder.Language.constantsOn.structure +-/ variable {β : Type v'} +#print FirstOrder.Language.LHom.constantsOnMap /- /-- A map between index types induces a map between constant languages. -/ -def Lhom.constantsOnMap (f : α → β) : constantsOn α →ᴸ constantsOn β := - Lhom.mk₂ f PEmpty.elim PEmpty.elim PEmpty.elim PEmpty.elim -#align first_order.language.Lhom.constants_on_map FirstOrder.Language.Lhom.constantsOnMap +def LHom.constantsOnMap (f : α → β) : constantsOn α →ᴸ constantsOn β := + LHom.mk₂ f PEmpty.elim PEmpty.elim PEmpty.elim PEmpty.elim +#align first_order.language.Lhom.constants_on_map FirstOrder.Language.LHom.constantsOnMap +-/ +#print FirstOrder.Language.constantsOnMap_isExpansionOn /- theorem constantsOnMap_isExpansionOn {f : α → β} {fα : α → M} {fβ : β → M} (h : fβ ∘ f = fα) : - @Lhom.IsExpansionOn _ _ (Lhom.constantsOnMap f) M (constantsOn.structure fα) + @LHom.IsExpansionOn _ _ (LHom.constantsOnMap f) M (constantsOn.structure fα) (constantsOn.structure fβ) := by letI := constants_on.Structure fα @@ -437,6 +566,7 @@ theorem constantsOnMap_isExpansionOn {f : α → β} {fα : α → M} {fβ : β ⟨fun n => Nat.casesOn n (fun F x => (congr_fun h F : _)) fun n F => isEmptyElim F, fun _ R => isEmptyElim R⟩ #align first_order.language.constants_on_map_is_expansion_on FirstOrder.Language.constantsOnMap_isExpansionOn +-/ end ConstantsOn @@ -448,47 +578,65 @@ section variable (α : Type w') +#print FirstOrder.Language.withConstants /- /-- Extends a language with a constant for each element of a parameter set in `M`. -/ def withConstants : Language.{max u w', v} := L.Sum (constantsOn α) #align first_order.language.with_constants FirstOrder.Language.withConstants +-/ -- mathport name: language.with_constants scoped[FirstOrder] notation:95 L "[[" α "]]" => L.withConstants α +/- warning: first_order.language.card_with_constants -> FirstOrder.Language.card_withConstants is a dubious translation: +lean 3 declaration is + forall (L : FirstOrder.Language.{u1, u2}) (α : Type.{u3}), Eq.{succ (succ (max (max u1 u3) u2))} Cardinal.{max (max u1 u3) u2} (FirstOrder.Language.card.{max u1 u3, u2} (FirstOrder.Language.withConstants.{u1, u2, u3} L α)) (HAdd.hAdd.{succ (max (max u1 u3) u2), succ (max (max u1 u3) u2), succ (max (max u1 u3) u2)} Cardinal.{max (max u1 u3) u2} Cardinal.{max (max u1 u3) u2} Cardinal.{max (max u1 u3) u2} (instHAdd.{succ (max (max u1 u3) u2)} Cardinal.{max (max u1 u3) u2} Cardinal.hasAdd.{max (max u1 u3) u2}) (Cardinal.lift.{u3, max u1 u2} (FirstOrder.Language.card.{u1, u2} L)) (Cardinal.lift.{max u1 u2, u3} (Cardinal.mk.{u3} α))) +but is expected to have type + forall (L : FirstOrder.Language.{u1, u2}) (α : Type.{u3}), Eq.{max (max (succ (succ u1)) (succ (succ u2))) (succ (succ u3))} Cardinal.{max (max u1 u3) u2} (FirstOrder.Language.card.{max u1 u3, u2} (FirstOrder.Language.withConstants.{u1, u2, u3} L α)) (HAdd.hAdd.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} Cardinal.{max (max u1 u2) u3} Cardinal.{max u3 u1 u2} Cardinal.{max (max u1 u2) u3} (instHAdd.{max (max (succ u1) (succ u2)) (succ u3)} Cardinal.{max (max u1 u2) u3} Cardinal.instAddCardinal.{max (max u1 u2) u3}) (Cardinal.lift.{u3, max u1 u2} (FirstOrder.Language.card.{u1, u2} L)) (Cardinal.lift.{max u1 u2, u3} (Cardinal.mk.{u3} α))) +Case conversion may be inaccurate. Consider using '#align first_order.language.card_with_constants FirstOrder.Language.card_withConstantsₓ'. -/ @[simp] theorem card_withConstants : L[[α]].card = Cardinal.lift.{w'} L.card + Cardinal.lift.{max u v} (#α) := by rw [with_constants, card_sum, card_constants_on] #align first_order.language.card_with_constants FirstOrder.Language.card_withConstants +#print FirstOrder.Language.lhomWithConstants /- /-- The language map adding constants. -/ @[simps] def lhomWithConstants : L →ᴸ L[[α]] := - Lhom.sumInl + LHom.sumInl #align first_order.language.Lhom_with_constants FirstOrder.Language.lhomWithConstants +-/ +#print FirstOrder.Language.lhomWithConstants_injective /- theorem lhomWithConstants_injective : (L.lhomWithConstants α).Injective := - Lhom.sumInl_injective + LHom.sumInl_injective #align first_order.language.Lhom_with_constants_injective FirstOrder.Language.lhomWithConstants_injective +-/ variable {α} +#print FirstOrder.Language.con /- /-- The constant symbol indexed by a particular element. -/ protected def con (a : α) : L[[α]].Constants := Sum.inr a #align first_order.language.con FirstOrder.Language.con +-/ variable {L} (α) +#print FirstOrder.Language.LHom.addConstants /- /-- Adds constants to a language map. -/ -def Lhom.addConstants {L' : Language} (φ : L →ᴸ L') : L[[α]] →ᴸ L'[[α]] := - φ.sum_map (Lhom.id _) -#align first_order.language.Lhom.add_constants FirstOrder.Language.Lhom.addConstants +def LHom.addConstants {L' : Language} (φ : L →ᴸ L') : L[[α]] →ᴸ L'[[α]] := + φ.sum_map (LHom.id _) +#align first_order.language.Lhom.add_constants FirstOrder.Language.LHom.addConstants +-/ +#print FirstOrder.Language.paramsStructure /- instance paramsStructure (A : Set α) : (constantsOn A).Structure α := constantsOn.structure coe #align first_order.language.params_Structure FirstOrder.Language.paramsStructure +-/ variable (L) (α) @@ -497,7 +645,7 @@ variable (L) (α) def Lequiv.addEmptyConstants [ie : IsEmpty α] : L ≃ᴸ L[[α]] where toLhom := lhomWithConstants L α - invLhom := Lhom.sumElim (Lhom.id L) (Lhom.ofIsEmpty (constantsOn α) L) + invLhom := LHom.sumElim (LHom.id L) (LHom.ofIsEmpty (constantsOn α) L) left_inv := by rw [Lhom_with_constants, Lhom.sum_elim_comp_inl] right_inv := by simp only [Lhom.comp_sum_elim, Lhom_with_constants, Lhom.comp_id] @@ -506,69 +654,103 @@ def Lequiv.addEmptyConstants [ie : IsEmpty α] : L ≃ᴸ L[[α]] variable {α} {β : Type _} +#print FirstOrder.Language.withConstants_funMap_sum_inl /- @[simp] theorem withConstants_funMap_sum_inl [L[[α]].Structure M] [(lhomWithConstants L α).IsExpansionOn M] {n} {f : L.Functions n} {x : Fin n → M} : @funMap (L[[α]]) M _ n (Sum.inl f) x = funMap f x := (lhomWithConstants L α).map_onFunction f x #align first_order.language.with_constants_fun_map_sum_inl FirstOrder.Language.withConstants_funMap_sum_inl +-/ +#print FirstOrder.Language.withConstants_relMap_sum_inl /- @[simp] theorem withConstants_relMap_sum_inl [L[[α]].Structure M] [(lhomWithConstants L α).IsExpansionOn M] {n} {R : L.Relations n} {x : Fin n → M} : @RelMap (L[[α]]) M _ n (Sum.inl R) x = RelMap R x := (lhomWithConstants L α).map_onRelation R x #align first_order.language.with_constants_rel_map_sum_inl FirstOrder.Language.withConstants_relMap_sum_inl +-/ +#print FirstOrder.Language.lhomWithConstantsMap /- /-- The language map extending the constant set. -/ def lhomWithConstantsMap (f : α → β) : L[[α]] →ᴸ L[[β]] := - Lhom.sumMap (Lhom.id L) (Lhom.constantsOnMap f) + LHom.sumMap (LHom.id L) (LHom.constantsOnMap f) #align first_order.language.Lhom_with_constants_map FirstOrder.Language.lhomWithConstantsMap +-/ +/- warning: first_order.language.Lhom.map_constants_comp_sum_inl -> FirstOrder.Language.LHom.map_constants_comp_sumInl is a dubious translation: +lean 3 declaration is + forall (L : FirstOrder.Language.{u1, u2}) {α : Type.{u3}} {β : Type.{u4}} {f : α -> β}, Eq.{max (succ u1) (succ (max u1 u4)) (succ u2)} (FirstOrder.Language.LHom.{u1, u2, max u1 u4, u2} L (FirstOrder.Language.withConstants.{u1, u2, u4} L β)) (FirstOrder.Language.LHom.comp.{u1, u2, max u1 u3, u2, max u1 u4, u2} L (FirstOrder.Language.withConstants.{u1, u2, u3} L α) (FirstOrder.Language.withConstants.{u1, u2, u4} L β) (FirstOrder.Language.lhomWithConstantsMap.{u1, u2, u3, u4} L α β f) (FirstOrder.Language.LHom.sumInl.{u1, u2, u3, 0} L (FirstOrder.Language.constantsOn.{u3} α))) (FirstOrder.Language.lhomWithConstants.{u1, u2, u4} L β) +but is expected to have type + forall (L : FirstOrder.Language.{u2, u3}) {α : Type.{u4}} {β : Type.{u1}} {f : α -> β}, Eq.{max (max (succ u2) (succ u3)) (succ u1)} (FirstOrder.Language.LHom.{u2, u3, max u2 u1, u3} L (FirstOrder.Language.withConstants.{u2, u3, u1} L β)) (FirstOrder.Language.LHom.comp.{u2, u3, max u2 u4, u3, max u2 u1, u3} L (FirstOrder.Language.withConstants.{u2, u3, u4} L α) (FirstOrder.Language.withConstants.{u2, u3, u1} L β) (FirstOrder.Language.lhomWithConstantsMap.{u2, u3, u4, u1} L α β f) (FirstOrder.Language.LHom.sumInl.{u2, u3, u4, 0} L (FirstOrder.Language.constantsOn.{u4} α))) (FirstOrder.Language.lhomWithConstants.{u2, u3, u1} L β) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.map_constants_comp_sum_inl FirstOrder.Language.LHom.map_constants_comp_sumInlₓ'. -/ @[simp] -theorem Lhom.map_constants_comp_sumInl {f : α → β} : - (L.lhomWithConstantsMap f).comp Lhom.sumInl = L.lhomWithConstants β := by ext (n f R) <;> rfl -#align first_order.language.Lhom.map_constants_comp_sum_inl FirstOrder.Language.Lhom.map_constants_comp_sumInl +theorem LHom.map_constants_comp_sumInl {f : α → β} : + (L.lhomWithConstantsMap f).comp LHom.sumInl = L.lhomWithConstants β := by ext (n f R) <;> rfl +#align first_order.language.Lhom.map_constants_comp_sum_inl FirstOrder.Language.LHom.map_constants_comp_sumInl end open FirstOrder +#print FirstOrder.Language.constantsOnSelfStructure /- instance constantsOnSelfStructure : (constantsOn M).Structure M := constantsOn.structure id #align first_order.language.constants_on_self_Structure FirstOrder.Language.constantsOnSelfStructure +-/ +#print FirstOrder.Language.withConstantsSelfStructure /- instance withConstantsSelfStructure : L[[M]].Structure M := Language.sumStructure _ _ M #align first_order.language.with_constants_self_Structure FirstOrder.Language.withConstantsSelfStructure +-/ +#print FirstOrder.Language.withConstants_self_expansion /- instance withConstants_self_expansion : (lhomWithConstants L M).IsExpansionOn M := ⟨fun _ _ _ => rfl, fun _ _ _ => rfl⟩ #align first_order.language.with_constants_self_expansion FirstOrder.Language.withConstants_self_expansion +-/ variable (α : Type _) [(constantsOn α).Structure M] +#print FirstOrder.Language.withConstantsStructure /- instance withConstantsStructure : L[[α]].Structure M := Language.sumStructure _ _ _ #align first_order.language.with_constants_Structure FirstOrder.Language.withConstantsStructure +-/ +#print FirstOrder.Language.withConstants_expansion /- instance withConstants_expansion : (L.lhomWithConstants α).IsExpansionOn M := ⟨fun _ _ _ => rfl, fun _ _ _ => rfl⟩ #align first_order.language.with_constants_expansion FirstOrder.Language.withConstants_expansion +-/ +#print FirstOrder.Language.addEmptyConstants_is_expansion_on' /- instance addEmptyConstants_is_expansion_on' : (Lequiv.addEmptyConstants L (∅ : Set M)).toLhom.IsExpansionOn M := L.withConstants_expansion _ #align first_order.language.add_empty_constants_is_expansion_on' FirstOrder.Language.addEmptyConstants_is_expansion_on' +-/ +#print FirstOrder.Language.addEmptyConstants_symm_isExpansionOn /- instance addEmptyConstants_symm_isExpansionOn : (Lequiv.addEmptyConstants L (∅ : Set M)).symm.toLhom.IsExpansionOn M := - Lhom.sumElim_isExpansionOn _ _ _ + LHom.sumElim_isExpansionOn _ _ _ #align first_order.language.add_empty_constants_symm_is_expansion_on FirstOrder.Language.addEmptyConstants_symm_isExpansionOn +-/ +#print FirstOrder.Language.addConstants_expansion /- instance addConstants_expansion {L' : Language} [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] : (φ.addConstants α).IsExpansionOn M := - Lhom.sumMap_isExpansionOn _ _ M + LHom.sumMap_isExpansionOn _ _ M #align first_order.language.add_constants_expansion FirstOrder.Language.addConstants_expansion +-/ +/- warning: first_order.language.with_constants_fun_map_sum_inr -> FirstOrder.Language.withConstants_funMap_sum_inr is a dubious translation: +lean 3 declaration is + forall (L : FirstOrder.Language.{u1, u2}) {M : Type.{u3}} [_inst_1 : FirstOrder.Language.Structure.{u1, u2, u3} L M] (α : Type.{u4}) [_inst_2 : FirstOrder.Language.Structure.{u4, 0, u3} (FirstOrder.Language.constantsOn.{u4} α) M] {a : α} {x : (Fin (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) -> M}, Eq.{succ u3} M (FirstOrder.Language.Structure.funMap.{max u1 u4, u2, u3} (FirstOrder.Language.withConstants.{u1, u2, u4} L α) M (FirstOrder.Language.withConstantsStructure.{u1, u2, u3, u4} L M _inst_1 α _inst_2) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (Sum.inr.{u1, u4} (FirstOrder.Language.Functions.{u1, u2} L (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (FirstOrder.Language.Functions.{u4, 0} (FirstOrder.Language.constantsOn.{u4} α) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) a) x) ((fun (a : Type.{max u1 u4}) (b : Type.{u3}) [self : HasLiftT.{succ (max u1 u4), succ u3} a b] => self.0) (FirstOrder.Language.Constants.{max u1 u4, u2} (FirstOrder.Language.withConstants.{u1, u2, u4} L α)) M (HasLiftT.mk.{succ (max u1 u4), succ u3} (FirstOrder.Language.Constants.{max u1 u4, u2} (FirstOrder.Language.withConstants.{u1, u2, u4} L α)) M (CoeTCₓ.coe.{succ (max u1 u4), succ u3} (FirstOrder.Language.Constants.{max u1 u4, u2} (FirstOrder.Language.withConstants.{u1, u2, u4} L α)) M (FirstOrder.Language.hasCoeT.{max u1 u4, u2, u3} (FirstOrder.Language.withConstants.{u1, u2, u4} L α) M (FirstOrder.Language.withConstantsStructure.{u1, u2, u3, u4} L M _inst_1 α _inst_2)))) (FirstOrder.Language.con.{u1, u2, u4} L α a)) +but is expected to have type + forall (L : FirstOrder.Language.{u2, u3}) {M : Type.{u4}} [_inst_1 : FirstOrder.Language.Structure.{u2, u3, u4} L M] (α : Type.{u1}) [_inst_2 : FirstOrder.Language.Structure.{u1, 0, u4} (FirstOrder.Language.constantsOn.{u1} α) M] {a : α} {x : (Fin (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) -> M}, Eq.{succ u4} M (FirstOrder.Language.Structure.funMap.{max u1 u2, u3, u4} (FirstOrder.Language.withConstants.{u2, u3, u1} L α) M (FirstOrder.Language.withConstantsStructure.{u2, u3, u4, u1} L M _inst_1 α _inst_2) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (Sum.inr.{u2, u1} (FirstOrder.Language.Functions.{u2, u3} L (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (FirstOrder.Language.Functions.{u1, 0} (FirstOrder.Language.constantsOn.{u1} α) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) a) x) (FirstOrder.Language.constantMap.{max u2 u1, u3, u4} (FirstOrder.Language.withConstants.{u2, u3, u1} L α) M (FirstOrder.Language.withConstantsStructure.{u2, u3, u4, u1} L M _inst_1 α _inst_2) (FirstOrder.Language.con.{u2, u3, u1} L α a)) +Case conversion may be inaccurate. Consider using '#align first_order.language.with_constants_fun_map_sum_inr FirstOrder.Language.withConstants_funMap_sum_inrₓ'. -/ @[simp] theorem withConstants_funMap_sum_inr {a : α} {x : Fin 0 → M} : @funMap (L[[α]]) M _ 0 (Sum.inr a : L[[α]].Functions 0) x = L.con a := @@ -579,6 +761,12 @@ theorem withConstants_funMap_sum_inr {a : α} {x : Fin 0 → M} : variable {α} (A : Set M) +/- warning: first_order.language.coe_con -> FirstOrder.Language.coe_con is a dubious translation: +lean 3 declaration is + forall (L : FirstOrder.Language.{u1, u2}) {M : Type.{u3}} [_inst_1 : FirstOrder.Language.Structure.{u1, u2, u3} L M] (A : Set.{u3} M) {a : coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A}, Eq.{succ u3} M ((fun (a : Type.{max u1 u3}) (b : Type.{u3}) [self : HasLiftT.{succ (max u1 u3), succ u3} a b] => self.0) (FirstOrder.Language.Constants.{max u1 u3, u2} (FirstOrder.Language.withConstants.{u1, u2, u3} L (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A))) M (HasLiftT.mk.{succ (max u1 u3), succ u3} (FirstOrder.Language.Constants.{max u1 u3, u2} (FirstOrder.Language.withConstants.{u1, u2, u3} L (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A))) M (CoeTCₓ.coe.{succ (max u1 u3), succ u3} (FirstOrder.Language.Constants.{max u1 u3, u2} (FirstOrder.Language.withConstants.{u1, u2, u3} L (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A))) M (FirstOrder.Language.hasCoeT.{max u1 u3, u2, u3} (FirstOrder.Language.withConstants.{u1, u2, u3} L (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A)) M (FirstOrder.Language.withConstantsStructure.{u1, u2, u3, u3} L M _inst_1 (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A) (FirstOrder.Language.paramsStructure.{u3} M A))))) (FirstOrder.Language.con.{u1, u2, u3} L (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A) a)) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A) M (HasLiftT.mk.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A) M (CoeTCₓ.coe.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A) M (coeBase.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Set.{u3} M) Type.{u3} (Set.hasCoeToSort.{u3} M) A) M (coeSubtype.{succ u3} M (fun (x : M) => Membership.Mem.{u3, u3} M (Set.{u3} M) (Set.hasMem.{u3} M) x A))))) a) +but is expected to have type + forall (L : FirstOrder.Language.{u1, u2}) {M : Type.{u3}} [_inst_1 : FirstOrder.Language.Structure.{u1, u2, u3} L M] (A : Set.{u3} M) {a : Set.Elem.{u3} M A}, Eq.{succ u3} M (FirstOrder.Language.constantMap.{max u1 u3, u2, u3} (FirstOrder.Language.withConstants.{u1, u2, u3} L (Set.Elem.{u3} M A)) M (FirstOrder.Language.withConstantsStructure.{u1, u2, u3, u3} L M _inst_1 (Set.Elem.{u3} M A) (FirstOrder.Language.paramsStructure.{u3} M A)) (FirstOrder.Language.con.{u1, u2, u3} L (Set.Elem.{u3} M A) a)) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x A) a) +Case conversion may be inaccurate. Consider using '#align first_order.language.coe_con FirstOrder.Language.coe_conₓ'. -/ @[simp] theorem coe_con {a : A} : (L.con a : M) = a := rfl @@ -586,15 +774,19 @@ theorem coe_con {a : A} : (L.con a : M) = a := variable {A} {B : Set M} (h : A ⊆ B) +#print FirstOrder.Language.constantsOnMap_inclusion_isExpansionOn /- instance constantsOnMap_inclusion_isExpansionOn : - (Lhom.constantsOnMap (Set.inclusion h)).IsExpansionOn M := + (LHom.constantsOnMap (Set.inclusion h)).IsExpansionOn M := constantsOnMap_isExpansionOn rfl #align first_order.language.constants_on_map_inclusion_is_expansion_on FirstOrder.Language.constantsOnMap_inclusion_isExpansionOn +-/ +#print FirstOrder.Language.map_constants_inclusion_isExpansionOn /- instance map_constants_inclusion_isExpansionOn : (L.lhomWithConstantsMap (Set.inclusion h)).IsExpansionOn M := - Lhom.sumMap_isExpansionOn _ _ _ + LHom.sumMap_isExpansionOn _ _ _ #align first_order.language.map_constants_inclusion_is_expansion_on FirstOrder.Language.map_constants_inclusion_isExpansionOn +-/ end WithConstants diff --git a/Mathbin/ModelTheory/Order.lean b/Mathbin/ModelTheory/Order.lean index 5497b68ee5..d9424db772 100644 --- a/Mathbin/ModelTheory/Order.lean +++ b/Mathbin/ModelTheory/Order.lean @@ -90,7 +90,7 @@ variable (L) /-- The language homomorphism sending the unique symbol `≤` of `language.order` to `≤` in an ordered language. -/ def orderLhom : Language.order →ᴸ L := - Lhom.mk₂ Empty.elim Empty.elim Empty.elim Empty.elim fun _ => leSymb + LHom.mk₂ Empty.elim Empty.elim Empty.elim Empty.elim fun _ => leSymb #align first_order.language.order_Lhom FirstOrder.Language.orderLhom end IsOrdered @@ -105,8 +105,8 @@ theorem orderLhom_leSymb [L.IsOrdered] : #align first_order.language.order_Lhom_le_symb FirstOrder.Language.orderLhom_leSymb @[simp] -theorem orderLhom_order : orderLhom Language.order = Lhom.id Language.order := - Lhom.funext (Subsingleton.elim _ _) (Subsingleton.elim _ _) +theorem orderLhom_order : orderLhom Language.order = LHom.id Language.order := + LHom.funext (Subsingleton.elim _ _) (Subsingleton.elim _ _) #align first_order.language.order_Lhom_order FirstOrder.Language.orderLhom_order instance : IsOrdered (L.Sum Language.order) := @@ -160,14 +160,14 @@ variable (L M) /-- A structure is ordered if its language has a `≤` symbol whose interpretation is -/ abbrev OrderedStructure [IsOrdered L] [LE M] [L.Structure M] : Prop := - Lhom.IsExpansionOn (orderLhom L) M + LHom.IsExpansionOn (orderLhom L) M #align first_order.language.ordered_structure FirstOrder.Language.OrderedStructure variable {L M} @[simp] theorem orderedStructure_iff [IsOrdered L] [LE M] [L.Structure M] : - L.OrderedStructure M ↔ Lhom.IsExpansionOn (orderLhom L) M := + L.OrderedStructure M ↔ LHom.IsExpansionOn (orderLhom L) M := Iff.rfl #align first_order.language.ordered_structure_iff FirstOrder.Language.orderedStructure_iff diff --git a/Mathbin/ModelTheory/Semantics.lean b/Mathbin/ModelTheory/Semantics.lean index 5acc331df0..48dca8eec8 100644 --- a/Mathbin/ModelTheory/Semantics.lean +++ b/Mathbin/ModelTheory/Semantics.lean @@ -209,7 +209,7 @@ theorem realize_onTerm [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] induction' t with _ n f ts ih · rfl · simp only [term.realize, Lhom.on_term, Lhom.map_on_function, ih] -#align first_order.language.Lhom.realize_on_term FirstOrder.Language.Lhom.realize_onTerm +#align first_order.language.Lhom.realize_on_term FirstOrder.Language.LHom.realize_onTerm end Lhom @@ -605,7 +605,7 @@ theorem realize_onBoundedFormula [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpan rfl · simp only [on_bounded_formula, ih1, ih2, realize_imp] · simp only [on_bounded_formula, ih3, realize_all] -#align first_order.language.Lhom.realize_on_bounded_formula FirstOrder.Language.Lhom.realize_onBoundedFormula +#align first_order.language.Lhom.realize_on_bounded_formula FirstOrder.Language.LHom.realize_onBoundedFormula end Lhom @@ -713,18 +713,18 @@ theorem realize_graph {f : L.Functions n} {x : Fin n → M} {y : M} : end Formula @[simp] -theorem Lhom.realize_onFormula [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (ψ : L.Formula α) +theorem LHom.realize_onFormula [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (ψ : L.Formula α) {v : α → M} : (φ.onFormula ψ).realize v ↔ ψ.realize v := φ.realize_onBoundedFormula ψ -#align first_order.language.Lhom.realize_on_formula FirstOrder.Language.Lhom.realize_onFormula +#align first_order.language.Lhom.realize_on_formula FirstOrder.Language.LHom.realize_onFormula @[simp] -theorem Lhom.setOf_realize_onFormula [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] +theorem LHom.setOf_realize_onFormula [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (ψ : L.Formula α) : (setOf (φ.onFormula ψ).realize : Set (α → M)) = setOf ψ.realize := by ext simp -#align first_order.language.Lhom.set_of_realize_on_formula FirstOrder.Language.Lhom.setOf_realize_onFormula +#align first_order.language.Lhom.set_of_realize_on_formula FirstOrder.Language.LHom.setOf_realize_onFormula variable (M) @@ -775,10 +775,10 @@ theorem realize_equivSentence_symm (φ : L[[α]].Sentence) (v : α → M) : end Formula @[simp] -theorem Lhom.realize_onSentence [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] +theorem LHom.realize_onSentence [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (ψ : L.Sentence) : M ⊨ φ.onSentence ψ ↔ M ⊨ ψ := φ.realize_onFormula ψ -#align first_order.language.Lhom.realize_on_sentence FirstOrder.Language.Lhom.realize_onSentence +#align first_order.language.Lhom.realize_on_sentence FirstOrder.Language.LHom.realize_onSentence variable (L) @@ -839,9 +839,9 @@ theorem Theory.realize_sentence_of_mem [M ⊨ T] {φ : L.Sentence} (h : φ ∈ T /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/ /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/ @[simp] -theorem Lhom.onTheory_model [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (T : L.Theory) : +theorem LHom.onTheory_model [L'.Structure M] (φ : L →ᴸ L') [φ.IsExpansionOn M] (T : L.Theory) : M ⊨ φ.onTheory T ↔ M ⊨ T := by simp [Theory.model_iff, Lhom.on_Theory] -#align first_order.language.Lhom.on_Theory_model FirstOrder.Language.Lhom.onTheory_model +#align first_order.language.Lhom.on_Theory_model FirstOrder.Language.LHom.onTheory_model variable {M} {T} diff --git a/Mathbin/ModelTheory/Skolem.lean b/Mathbin/ModelTheory/Skolem.lean index 493ab60d3e..77cf439876 100644 --- a/Mathbin/ModelTheory/Skolem.lean +++ b/Mathbin/ModelTheory/Skolem.lean @@ -85,7 +85,7 @@ noncomputable instance skolem₁Structure : L.skolem₁.Structure M := namespace Substructure theorem skolem₁_reduct_isElementary (S : (L.Sum L.skolem₁).Substructure M) : - (Lhom.sumInl.substructureReduct S).IsElementary := + (LHom.sumInl.substructureReduct S).IsElementary := by apply (Lhom.sum_inl.substructure_reduct S).is_elementary_of_exists intro n φ x a h @@ -98,7 +98,7 @@ theorem skolem₁_reduct_isElementary (S : (L.Sum L.skolem₁).Substructure M) : /-- Any `L.sum L.skolem₁`-substructure is an elementary `L`-substructure. -/ noncomputable def elementarySkolem₁Reduct (S : (L.Sum L.skolem₁).Substructure M) : L.ElementarySubstructure M := - ⟨Lhom.sumInl.substructureReduct S, S.skolem₁_reduct_isElementary⟩ + ⟨LHom.sumInl.substructureReduct S, S.skolem₁_reduct_isElementary⟩ #align first_order.language.substructure.elementary_skolem₁_reduct FirstOrder.Language.Substructure.elementarySkolem₁Reduct theorem coeSort_elementarySkolem₁Reduct (S : (L.Sum L.skolem₁).Substructure M) : diff --git a/Mathbin/ModelTheory/Substructures.lean b/Mathbin/ModelTheory/Substructures.lean index 9b3b9bdd2e..d9aca5923e 100644 --- a/Mathbin/ModelTheory/Substructures.lean +++ b/Mathbin/ModelTheory/Substructures.lean @@ -724,18 +724,18 @@ def substructureReduct : L'.Substructure M ↪o L.Substructure M simp only [SetLike.coe_set_eq] at h exact h map_rel_iff' S T := Iff.rfl -#align first_order.language.Lhom.substructure_reduct FirstOrder.Language.Lhom.substructureReduct +#align first_order.language.Lhom.substructure_reduct FirstOrder.Language.LHom.substructureReduct @[simp] theorem mem_substructureReduct {x : M} {S : L'.Substructure M} : x ∈ φ.substructureReduct S ↔ x ∈ S := Iff.rfl -#align first_order.language.Lhom.mem_substructure_reduct FirstOrder.Language.Lhom.mem_substructureReduct +#align first_order.language.Lhom.mem_substructure_reduct FirstOrder.Language.LHom.mem_substructureReduct @[simp] theorem coe_substructureReduct {S : L'.Substructure M} : (φ.substructureReduct S : Set M) = ↑S := rfl -#align first_order.language.Lhom.coe_substructure_reduct FirstOrder.Language.Lhom.coe_substructureReduct +#align first_order.language.Lhom.coe_substructure_reduct FirstOrder.Language.LHom.coe_substructureReduct end Lhom diff --git a/Mathbin/ModelTheory/Syntax.lean b/Mathbin/ModelTheory/Syntax.lean index c6414dd09c..71ee589fc5 100644 --- a/Mathbin/ModelTheory/Syntax.lean +++ b/Mathbin/ModelTheory/Syntax.lean @@ -311,28 +311,28 @@ scoped[FirstOrder] prefix:arg "&" => FirstOrder.Language.Term.var ∘ Sum.inr namespace Lhom -/- warning: first_order.language.Lhom.on_term -> FirstOrder.Language.Lhom.onTerm is a dubious translation: +/- warning: first_order.language.Lhom.on_term -> FirstOrder.Language.LHom.onTerm is a dubious translation: lean 3 declaration is - forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u4, u5}} {α : Type.{u3}}, (FirstOrder.Language.Lhom.{u1, u2, u4, u5} L L') -> (FirstOrder.Language.Term.{u1, u2, u3} L α) -> (FirstOrder.Language.Term.{u4, u5, u3} L' α) + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u4, u5}} {α : Type.{u3}}, (FirstOrder.Language.LHom.{u1, u2, u4, u5} L L') -> (FirstOrder.Language.Term.{u1, u2, u3} L α) -> (FirstOrder.Language.Term.{u4, u5, u3} L' α) but is expected to have type - forall {L : FirstOrder.Language.{u1, u5}} {L' : FirstOrder.Language.{u3, u4}} {α : Type.{u2}}, (FirstOrder.Language.Lhom.{u1, u5, u3, u4} L L') -> (FirstOrder.Language.Term.{u1, u5, u2} L α) -> (FirstOrder.Language.Term.{u3, u4, u2} L' α) -Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.on_term FirstOrder.Language.Lhom.onTermₓ'. -/ + forall {L : FirstOrder.Language.{u1, u5}} {L' : FirstOrder.Language.{u3, u4}} {α : Type.{u2}}, (FirstOrder.Language.LHom.{u1, u5, u3, u4} L L') -> (FirstOrder.Language.Term.{u1, u5, u2} L α) -> (FirstOrder.Language.Term.{u3, u4, u2} L' α) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.on_term FirstOrder.Language.LHom.onTermₓ'. -/ /-- Maps a term's symbols along a language map. -/ @[simp] def onTerm (φ : L →ᴸ L') : L.term α → L'.term α | var i => var i | func f ts => func (φ.onFunction f) fun i => on_term (ts i) -#align first_order.language.Lhom.on_term FirstOrder.Language.Lhom.onTerm +#align first_order.language.Lhom.on_term FirstOrder.Language.LHom.onTerm @[simp] -theorem id_onTerm : ((Lhom.id L).onTerm : L.term α → L.term α) = id := +theorem id_onTerm : ((LHom.id L).onTerm : L.term α → L.term α) = id := by ext t induction' t with _ _ _ _ ih · rfl · simp_rw [on_term, ih] rfl -#align first_order.language.Lhom.id_on_term FirstOrder.Language.Lhom.id_onTerm +#align first_order.language.Lhom.id_on_term FirstOrder.Language.LHom.id_onTerm @[simp] theorem comp_onTerm {L'' : Language} (φ : L' →ᴸ L'') (ψ : L →ᴸ L') : @@ -343,7 +343,7 @@ theorem comp_onTerm {L'' : Language} (φ : L' →ᴸ L'') (ψ : L →ᴸ L') : · rfl · simp_rw [on_term, ih] rfl -#align first_order.language.Lhom.comp_on_term FirstOrder.Language.Lhom.comp_onTerm +#align first_order.language.Lhom.comp_on_term FirstOrder.Language.LHom.comp_onTerm end Lhom @@ -980,12 +980,12 @@ namespace Lhom open BoundedFormula -/- warning: first_order.language.Lhom.on_bounded_formula -> FirstOrder.Language.Lhom.onBoundedFormula is a dubious translation: +/- warning: first_order.language.Lhom.on_bounded_formula -> FirstOrder.Language.LHom.onBoundedFormula is a dubious translation: lean 3 declaration is - forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u4, u5}} {α : Type.{u3}}, (FirstOrder.Language.Lhom.{u1, u2, u4, u5} L L') -> (forall {k : Nat}, (FirstOrder.Language.BoundedFormula.{u1, u2, u3} L α k) -> (FirstOrder.Language.BoundedFormula.{u4, u5, u3} L' α k)) + forall {L : FirstOrder.Language.{u1, u2}} {L' : FirstOrder.Language.{u4, u5}} {α : Type.{u3}}, (FirstOrder.Language.LHom.{u1, u2, u4, u5} L L') -> (forall {k : Nat}, (FirstOrder.Language.BoundedFormula.{u1, u2, u3} L α k) -> (FirstOrder.Language.BoundedFormula.{u4, u5, u3} L' α k)) but is expected to have type - forall {L : FirstOrder.Language.{u1, u5}} {L' : FirstOrder.Language.{u3, u4}} {α : Type.{u2}}, (FirstOrder.Language.Lhom.{u1, u5, u3, u4} L L') -> (forall {k : Nat}, (FirstOrder.Language.BoundedFormula.{u1, u5, u2} L α k) -> (FirstOrder.Language.BoundedFormula.{u3, u4, u2} L' α k)) -Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.on_bounded_formula FirstOrder.Language.Lhom.onBoundedFormulaₓ'. -/ + forall {L : FirstOrder.Language.{u1, u5}} {L' : FirstOrder.Language.{u3, u4}} {α : Type.{u2}}, (FirstOrder.Language.LHom.{u1, u5, u3, u4} L L') -> (forall {k : Nat}, (FirstOrder.Language.BoundedFormula.{u1, u5, u2} L α k) -> (FirstOrder.Language.BoundedFormula.{u3, u4, u2} L' α k)) +Case conversion may be inaccurate. Consider using '#align first_order.language.Lhom.on_bounded_formula FirstOrder.Language.LHom.onBoundedFormulaₓ'. -/ /-- Maps a bounded formula's symbols along a language map. -/ @[simp] def onBoundedFormula (g : L →ᴸ L') : ∀ {k : ℕ}, L.BoundedFormula α k → L'.BoundedFormula α k @@ -994,11 +994,11 @@ def onBoundedFormula (g : L →ᴸ L') : ∀ {k : ℕ}, L.BoundedFormula α k | k, Rel R ts => (g.onRelation R).BoundedFormula (g.onTerm ∘ ts) | k, imp f₁ f₂ => (on_bounded_formula f₁).imp (on_bounded_formula f₂) | k, all f => (on_bounded_formula f).all -#align first_order.language.Lhom.on_bounded_formula FirstOrder.Language.Lhom.onBoundedFormula +#align first_order.language.Lhom.on_bounded_formula FirstOrder.Language.LHom.onBoundedFormula @[simp] theorem id_onBoundedFormula : - ((Lhom.id L).onBoundedFormula : L.BoundedFormula α n → L.BoundedFormula α n) = id := + ((LHom.id L).onBoundedFormula : L.BoundedFormula α n → L.BoundedFormula α n) = id := by ext f induction' f with _ _ _ _ _ _ _ _ _ _ _ ih1 ih2 _ _ ih3 @@ -1008,7 +1008,7 @@ theorem id_onBoundedFormula : rfl · rw [on_bounded_formula, ih1, ih2, id.def, id.def, id.def] · rw [on_bounded_formula, ih3, id.def, id.def] -#align first_order.language.Lhom.id_on_bounded_formula FirstOrder.Language.Lhom.id_onBoundedFormula +#align first_order.language.Lhom.id_on_bounded_formula FirstOrder.Language.LHom.id_onBoundedFormula @[simp] theorem comp_onBoundedFormula {L'' : Language} (φ : L' →ᴸ L'') (ψ : L →ᴸ L') : @@ -1024,28 +1024,28 @@ theorem comp_onBoundedFormula {L'' : Language} (φ : L' →ᴸ L'') (ψ : L → rfl · simp only [on_bounded_formula, Function.comp_apply, ih1, ih2, eq_self_iff_true, and_self_iff] · simp only [ih3, on_bounded_formula, Function.comp_apply] -#align first_order.language.Lhom.comp_on_bounded_formula FirstOrder.Language.Lhom.comp_onBoundedFormula +#align first_order.language.Lhom.comp_on_bounded_formula FirstOrder.Language.LHom.comp_onBoundedFormula /-- Maps a formula's symbols along a language map. -/ def onFormula (g : L →ᴸ L') : L.Formula α → L'.Formula α := g.onBoundedFormula -#align first_order.language.Lhom.on_formula FirstOrder.Language.Lhom.onFormula +#align first_order.language.Lhom.on_formula FirstOrder.Language.LHom.onFormula /-- Maps a sentence's symbols along a language map. -/ def onSentence (g : L →ᴸ L') : L.Sentence → L'.Sentence := g.onFormula -#align first_order.language.Lhom.on_sentence FirstOrder.Language.Lhom.onSentence +#align first_order.language.Lhom.on_sentence FirstOrder.Language.LHom.onSentence /-- Maps a theory's symbols along a language map. -/ def onTheory (g : L →ᴸ L') (T : L.Theory) : L'.Theory := g.onSentence '' T -#align first_order.language.Lhom.on_Theory FirstOrder.Language.Lhom.onTheory +#align first_order.language.Lhom.on_Theory FirstOrder.Language.LHom.onTheory @[simp] theorem mem_onTheory {g : L →ᴸ L'} {T : L.Theory} {φ : L'.Sentence} : φ ∈ g.onTheory T ↔ ∃ φ₀, φ₀ ∈ T ∧ g.onSentence φ₀ = φ := Set.mem_image _ _ _ -#align first_order.language.Lhom.mem_on_Theory FirstOrder.Language.Lhom.mem_onTheory +#align first_order.language.Lhom.mem_on_Theory FirstOrder.Language.LHom.mem_onTheory end Lhom diff --git a/lake-manifest.json b/lake-manifest.json index 335f739272..08fe9534c2 100644 --- a/lake-manifest.json +++ b/lake-manifest.json @@ -4,15 +4,15 @@ [{"git": {"url": "https://github.com/leanprover-community/lean3port.git", "subDir?": null, - "rev": "3416b87ec8cbacb1e962544fa82526682f49c6a1", + "rev": "f749c4dbe76ae8aa697a9043bad05b0f4de3f188", "name": "lean3port", - "inputRev?": "3416b87ec8cbacb1e962544fa82526682f49c6a1"}}, + "inputRev?": "f749c4dbe76ae8aa697a9043bad05b0f4de3f188"}}, {"git": {"url": "https://github.com/leanprover-community/mathlib4.git", "subDir?": null, - "rev": "72a49e2ccfc57378887e7de57b73c480817044d3", + "rev": "28d9dc68d7bd1304ee2bebc14a12f7fb341d9bed", "name": "mathlib", - "inputRev?": "72a49e2ccfc57378887e7de57b73c480817044d3"}}, + "inputRev?": "28d9dc68d7bd1304ee2bebc14a12f7fb341d9bed"}}, {"git": {"url": "https://github.com/gebner/quote4", "subDir?": null, diff --git a/lakefile.lean b/lakefile.lean index 192dd15519..00b4a4c41d 100644 --- a/lakefile.lean +++ b/lakefile.lean @@ -4,7 +4,7 @@ open Lake DSL System -- Usually the `tag` will be of the form `nightly-2021-11-22`. -- If you would like to use an artifact from a PR build, -- it will be of the form `pr-branchname-sha`. -def tag : String := "nightly-2023-04-12-22" +def tag : String := "nightly-2023-04-13-00" def releaseRepo : String := "leanprover-community/mathport" def oleanTarName : String := "mathlib3-binport.tar.gz" @@ -38,7 +38,7 @@ target fetchOleans (_pkg : Package) : Unit := do untarReleaseArtifact releaseRepo tag oleanTarName libDir return .nil -require lean3port from git "https://github.com/leanprover-community/lean3port.git"@"3416b87ec8cbacb1e962544fa82526682f49c6a1" +require lean3port from git "https://github.com/leanprover-community/lean3port.git"@"f749c4dbe76ae8aa697a9043bad05b0f4de3f188" @[default_target] lean_lib Mathbin where