ModuleExists_bounded_two_cochain_of_local_coboundaries.lean
Nyll.AlgebraicCurves.Geometry.Exists_bounded_two_cochain_of_local_coboundaries
65 declarations indexed from sourceView source ↗ Declarations
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.Table
DocumentationStructure constants of a commutative unital multiplication table.
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst
DocumentationThe product of coordinate vectors determined by structure constants.
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst_apply
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.sum3_rot
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.sum4_rot
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst_cst_left
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst_cst_right
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst_comm_of
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst_add_left
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst_add_right
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst_smul_left
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst_zero_left
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.cst_unit_left
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg
DocumentationThe algebra with the given multiplication table.
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.ext
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.equiv
DocumentationThe coordinate equivalence of the table algebra.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.coord_add
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.coord_zero
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.coord_neg
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.coord_sub
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.coord_mk
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.coord_mul
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.coord_one
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.mul_comm'
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.mul_assoc'
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.one_mul'
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.instCommRing
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.e
DocumentationThe coordinate basis vector of the algebra defined by the multiplication table.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.TAlg.coord_e
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
namespace TAlg
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D1
DocumentationThe Hochschild coboundary of a linear cochain in coordinates given by the multiplication constants.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D2
DocumentationThe Hochschild coboundary of a bilinear cochain in multiplication coordinates.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.L1
DocumentationThe linear coordinate operation determined by the matrix of coefficients.
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.L2
DocumentationThe bilinear coordinate operation determined by the three-index array of coefficients.
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.hd1
DocumentationThe Hochschild coboundary of the specified linear coordinate operation.
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.hd2
DocumentationThe Hochschild coboundary of a bilinear operation on the algebra.
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.coord_mul_L1
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.coord_L1_mul
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.sum3_rot'
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.coord_L1_mul'
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.coord_hd1
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.coord_hd2
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.sum3_single
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.sum2_single
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.L2_D1_eq_hd1
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.hd2_hd1_eq_zero
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D2_D1
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Semantics
variable (T : Table R N)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D2_add
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Linear
variable (γ : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → R)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D2_smul
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Linear
variable (γ : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → R)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D2_zero
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Linear
variable (γ : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → R)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D2_sub
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Linear
variable (γ : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → R)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D1_add
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Linear
variable (γ : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → R)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D1_smul
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Linear
variable (γ : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → R)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D1_symm
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Linear
variable (γ : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → R)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.D1_norm
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section TableAlgebra
variable {R : Type*} [CommRing R] {N : ℕ}
open scoped TAlg
section Linear
variable (γ : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → R)
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.d_le_two
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section Degrees
variable {K : Type u} [Field K] {n : ℕ} (d : Fin (n + 1) → ℕ)
(hd0 : d 0 = 0) (hd : ∀ i, i ≠ 0 → d i = 1 ∨ d i = 2)
(γ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hγ1 : ∀ j k, γ 0 j k = if j = k then 1 else 0)
(hγc : ∀ i j k, γ i j k = γ j i k)
(hγd : ∀ i j k, i ≠ 0 → j ≠ 0 → (γ i j k).natDegree ≤ d i + d j - d k)
include hd0 hd in
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.one_le_d
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section Degrees
variable {K : Type u} [Field K] {n : ℕ} (d : Fin (n + 1) → ℕ)
(hd0 : d 0 = 0) (hd : ∀ i, i ≠ 0 → d i = 1 ∨ d i = 2)
(γ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hγ1 : ∀ j k, γ 0 j k = if j = k then 1 else 0)
(hγc : ∀ i j k, γ i j k = γ j i k)
(hγd : ∀ i j k, i ≠ 0 → j ≠ 0 → (γ i j k).natDegree ≤ d i + d j - d k)
include hd in
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.natDegree_γ_zero_right
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section Degrees
variable {K : Type u} [Field K] {n : ℕ} (d : Fin (n + 1) → ℕ)
(hd0 : d 0 = 0) (hd : ∀ i, i ≠ 0 → d i = 1 ∨ d i = 2)
(γ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hγ1 : ∀ j k, γ 0 j k = if j = k then 1 else 0)
(hγc : ∀ i j k, γ i j k = γ j i k)
(hγd : ∀ i j k, i ≠ 0 → j ≠ 0 → (γ i j k).natDegree ≤ d i + d j - d k)
include hγ1 hγc in
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.natDegree_D1_le
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section Degrees
variable {K : Type u} [Field K] {n : ℕ} (d : Fin (n + 1) → ℕ)
(hd0 : d 0 = 0) (hd : ∀ i, i ≠ 0 → d i = 1 ∨ d i = 2)
(γ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hγ1 : ∀ j k, γ 0 j k = if j = k then 1 else 0)
(hγc : ∀ i j k, γ i j k = γ j i k)
(hγd : ∀ i j k, i ≠ 0 → j ≠ 0 → (γ i j k).natDegree ≤ d i + d j - d k)
include hd0 hd hγ1 hγc hγd in
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.multIdeal
DocumentationThe ideal of scalars making the prescribed three-cochain a normalized symmetric coboundary.
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section Main
variable {K : Type u} [Field K] {n : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.mem_multIdeal
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section Main
variable {K : Type u} [Field K] {n : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries.PatchSol.main
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
noncomputable section
namespace PatchSol
section Main
variable {K : Type u} [Field K] {n : ℕ}
Lean source · full declarationtheorem main (d : Fin (n + 1) → ℕ)
(hd0 : d 0 = 0) (hd : ∀ i, i ≠ 0 → d i = 1 ∨ d i = 2)
(γ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hγ1 : ∀ j k, γ 0 j k = if j = k then 1 else 0)
(hγc : ∀ i j k, γ i j k = γ j i k)
(hγa : ∀ i j l m, ∑ k, γ i j k * γ k l m = ∑ k, γ j l k * γ i k m)
(hγd : ∀ i j k, i ≠ 0 → j ≠ 0 → (γ i j k).natDegree ≤ d i + d j - d k)
(a : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hloc : ∀ P : Ideal K[X], P.IsMaximal → ∃ s : K[X], s ∉ P ∧ s ∈ multIdeal γ a)
(t : K[X]) (ht : t ≠ 0) (φi : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hφi1 : ∀ j k, φi 0 j k = 0) (hφic : ∀ i j k, φi i j k = φi j i k)
(hφid : ∀ i j k, i ≠ 0 → j ≠ 0 → (φi i j k).natDegree ≤ t.natDegree + d i + d j - d k)
(hφia : ∀ i j l m, D2 γ φi i j l m = t * a i j l m)
(hgen : ∀ ψ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X],
(∀ j k, ψ 0 j k = 0) → (∀ i j k, ψ i j k = ψ j i k) → (∀ i j l m, D2 γ ψ i j l m = 0) →
∃ u : K[X], u ≠ 0 ∧ ∃ lam : Fin (n + 1) → Fin (n + 1) → K[X], (∀ m, lam 0 m = 0) ∧
∀ i j m, u * ψ i j m = D1 γ lam i j m) :
∃ φ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X],
(∀ j k, φ 0 j k = 0) ∧ (∀ i j k, φ i j k = φ j i k) ∧
(∀ i j k, i ≠ 0 → j ≠ 0 → (φ i j k).natDegree ≤ d i + d j - d k) ∧
∀ i j l m, D2 γ φ i j l m = a i j l m := by
let T : Table K[X] n := ⟨γ, hγ1, hγc, hγa⟩
have htop : multIdeal γ a = ⊤ := by
by_contra hne
obtain ⟨P, hP, hle⟩ := Ideal.exists_le_maximal _ hne
obtain ⟨s, hsP, hs⟩ := hloc P hP
exact hsP (hle hs)
have h1 : (1 : K[X]) ∈ multIdeal γ a := by rw [htop]; exact Submodule.mem_top
obtain ⟨φ₀, hφ₀1, hφ₀c, hφ₀a⟩ := (mem_multIdeal γ a 1).1 h1
simp only [one_mul] at hφ₀a
let ψ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X] := t • φ₀ - φi
have hψ1 : ∀ j k, ψ 0 j k = 0 := fun j k => by simp [ψ, hφ₀1, hφi1]
have hψc : ∀ i j k, ψ i j k = ψ j i k := fun i j k => by
simp only [ψ, Pi.sub_apply, Pi.smul_apply, hφ₀c i j k, hφic i j k]
have hψa : ∀ i j l m, D2 γ ψ i j l m = 0 := fun i j l m => by
change D2 γ (t • φ₀ - φi) i j l m = 0
rw [D2_sub, D2_smul, hφ₀a, hφia, sub_self]
obtain ⟨u, hu, lam, hlam0, hlam⟩ := hgen ψ hψ1 hψc hψa
have hut : u * t ≠ 0 := mul_ne_zero hu ht
let q : Fin (n + 1) → Fin (n + 1) → K[X] := fun i m => lam i m / (u * t)
let r : Fin (n + 1) → Fin (n + 1) → K[X] := fun i m => lam i m % (u * t)
have hqr : ∀ i m, lam i m = (u * t) * q i m + r i m := fun i m =>
(EuclideanDomain.div_add_mod (lam i m) (u * t)).symm
have hq0 : ∀ m, q 0 m = 0 := fun m => by simp [q, hlam0]
have hr0 : ∀ m, r 0 m = 0 := fun m => by simp [r, hlam0]
have hrdeg : ∀ i m, r i m = 0 ∨ (r i m).natDegree + 1 ≤ (u * t).natDegree := by
intro i m
by_cases h : r i m = 0
· exact Or.inl h
· right
have hlt : (r i m).degree < (u * t).degree := EuclideanDomain.mod_lt (lam i m) hut
have := Polynomial.natDegree_lt_natDegree h hlt
omega
let φ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X] := fun i j k => φ₀ i j k - D1 γ q i j k
have hlamq : lam = (u * t) • q + r := by
funext i m; simp only [Pi.add_apply, Pi.smul_apply, smul_eq_mul]; exact hqr i m
have hkey : ∀ i j k, (u * t) * φ i j k = u * φi i j k + D1 γ r i j k := by
intro i j k
have e1 : u * ψ i j k = D1 γ lam i j k := hlam i j k
have e2 : D1 γ lam i j k = (u * t) * D1 γ q i j k + D1 γ r i j k := by
rw [hlamq, D1_add, D1_smul]
have e3 : u * ψ i j k = u * (t * φ₀ i j k) - u * φi i j k := by
simp only [ψ, Pi.sub_apply, Pi.smul_apply, smul_eq_mul, mul_sub]
change (u * t) * (φ₀ i j k - D1 γ q i j k) = u * φi i j k + D1 γ r i j k
have : (u * t) * φ₀ i j k = u * φi i j k + (u * t) * D1 γ q i j k + D1 γ r i j k := by
linear_combination e1 + e2 - e3
rw [mul_sub, this]; ring
refine ⟨φ, fun j k => ?_, fun i j k => ?_, fun i j k hi hj => ?_, fun i j l m => ?_⟩
· change φ₀ 0 j k - D1 γ q 0 j k = 0
rw [hφ₀1, D1_norm γ hγ1 q hq0, sub_zero]
· change φ₀ i j k - D1 γ q i j k = φ₀ j i k - D1 γ q j i k
rw [hφ₀c i j k, D1_symm γ hγc q i j k]
· have hR : ((u * t) * φ i j k).natDegree ≤ (u * t).natDegree + (d i + d j - d k) := by
rw [hkey]
refine (natDegree_add_le _ _).trans (max_le ?_ ?_)
· refine natDegree_mul_le.trans ?_
have := hφid i j k hi hj
rw [natDegree_mul hu ht]
omega
· have := natDegree_D1_le d hd0 hd γ hγ1 hγc hγd (u * t).natDegree r hr0 hrdeg i j k hi hj
omega
by_cases hφ0 : φ i j k = 0
· rw [hφ0, natDegree_zero]; exact Nat.zero_le _
· rw [natDegree_mul hut hφ0] at hR
omega
· change D2 γ (fun i j k => φ₀ i j k - D1 γ q i j k) i j l m = a i j l m
have : (fun i j k => φ₀ i j k - D1 γ q i j k) = φ₀ - D1 γ q := by
funext i j k; rfl
rw [this, D2_sub, hφ₀a, D2_D1 T q, sub_zero]
AlgebraicCurve.exists_bounded_two_cochain_of_local_coboundaries
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_bounded_two_cochain_of_local_coboundaries
open Polynomial
universe u
open PatchSol in
Lean source · full declarationtheorem _root_.AlgebraicCurve.exists_bounded_two_cochain_of_local_coboundaries
(K : Type u) [Field K] (n : ℕ) (d : Fin (n + 1) → ℕ)
(hd0 : d 0 = 0) (hd : ∀ i, i ≠ 0 → d i = 1 ∨ d i = 2)
(γ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hγ1 : ∀ j k, γ 0 j k = if j = k then 1 else 0)
(hγc : ∀ i j k, γ i j k = γ j i k)
(hγa : ∀ i j l m, ∑ k, γ i j k * γ k l m = ∑ k, γ j l k * γ i k m)
(hγd : ∀ i j k, i ≠ 0 → j ≠ 0 → (γ i j k).natDegree ≤ d i + d j - d k)
(a : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hloc : ∀ P : Ideal K[X], P.IsMaximal → ∃ s : K[X], s ∉ P ∧
∃ φ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X],
(∀ j k, φ 0 j k = 0) ∧ (∀ i j k, φ i j k = φ j i k) ∧
∀ i j l m, (∑ k, φ j l k * γ i k m) - (∑ k, γ i j k * φ k l m) +
(∑ k, γ j l k * φ i k m) - (∑ k, φ i j k * γ k l m) = s * a i j l m)
(hinfty : ∃ t : K[X], t ≠ 0 ∧
∃ φ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X],
(∀ j k, φ 0 j k = 0) ∧ (∀ i j k, φ i j k = φ j i k) ∧
(∀ i j k, i ≠ 0 → j ≠ 0 → (φ i j k).natDegree ≤ t.natDegree + d i + d j - d k) ∧
∀ i j l m, (∑ k, φ j l k * γ i k m) - (∑ k, γ i j k * φ k l m) +
(∑ k, γ j l k * φ i k m) - (∑ k, φ i j k * γ k l m) = t * a i j l m)
(hgen : ∀ ψ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X],
(∀ j k, ψ 0 j k = 0) → (∀ i j k, ψ i j k = ψ j i k) →
(∀ i j l m, (∑ k, ψ j l k * γ i k m) - (∑ k, γ i j k * ψ k l m) +
(∑ k, γ j l k * ψ i k m) - (∑ k, ψ i j k * γ k l m) = 0) →
∃ u : K[X], u ≠ 0 ∧ ∃ lam : Fin (n + 1) → Fin (n + 1) → K[X], (∀ m, lam 0 m = 0) ∧
∀ i j m, u * ψ i j m =
(∑ k, lam j k * γ i k m) - (∑ k, γ i j k * lam k m) + (∑ k, lam i k * γ k j m)) :
∃ φ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X],
(∀ j k, φ 0 j k = 0) ∧ (∀ i j k, φ i j k = φ j i k) ∧
(∀ i j k, i ≠ 0 → j ≠ 0 → (φ i j k).natDegree ≤ d i + d j - d k) ∧
∀ i j l m, (∑ k, φ j l k * γ i k m) - (∑ k, γ i j k * φ k l m) +
(∑ k, γ j l k * φ i k m) - (∑ k, φ i j k * γ k l m) = a i j l m := by
obtain ⟨t, ht, φi, hφi1, hφic, hφid, hφia⟩ := hinfty
have hloc' : ∀ P : Ideal K[X], P.IsMaximal → ∃ s : K[X], s ∉ P ∧ s ∈ multIdeal γ a := by
intro P hP
obtain ⟨s, hs, φ, h1, h2, h3⟩ := hloc P hP
exact ⟨s, hs, φ, h1, h2, h3⟩
exact main d hd0 hd γ hγ1 hγc hγa hγd a hloc' t ht φi hφi1 hφic hφid hφia hgen