Implement CommRing instance for CMvPolynomial
Summary
Implement the CommRing instance for CMvPolynomial, extending the CommSemiring structure with subtraction. This is currently blocked by circular dependency issues.
Context
Part of Phase 1: Foundation Completion (API completeness) as outlined in ROADMAP.md line 59. The CommSemiring instance is defined in MvPolyEquiv.lean, but we cannot import it due to circular dependencies.
What to Implement
instance {n : ℕ} {R : Type} [CommRing R] [BEq R] [LawfulBEq R] : CommRing (CMvPolynomial n R)
- Extends the
CommSemiring structure with subtraction
- Location:
CompPoly/Multivariate/CMvPolynomial.lean lines 253-277
- Currently all fields are
sorry due to circular dependency
Dependencies
CommSemiring instance (defined in MvPolyEquiv.lean, but circular dependency prevents import)
Neg and Sub operations (need to verify these exist in Lawful.lean)
- All ring axioms (associativity, distributivity, etc.)
Implementation Notes
- Circular Dependency Problem:
MvPolyEquiv.lean imports CMvPolynomial.lean, so we cannot import MvPolyEquiv.lean to get the CommSemiring instance
- Potential Solutions:
- Move
CommSemiring instance to a separate file that both can import
- Duplicate the instance definition (not ideal)
- Restructure files to break the circular dependency
- Need to verify that
Neg and Sub operations exist in Lawful.lean
- Most fields can likely be proven using existing operations, once the dependency is resolved
Fields to Implement
All fields currently have sorry:
add_assoc, zero_add, add_zero
nsmul, nsmul_zero, nsmul_succ
add_comm
left_distrib, right_distrib
zero_mul, mul_zero
mul_assoc, one_mul, mul_one
npow, npow_zero, npow_succ
zsmul, zsmul_zero', zsmul_succ', zsmul_neg'
neg_add_cancel
mul_comm
Related Issues
- Requires resolving circular dependency with
MvPolyEquiv.lean
- May need to restructure file organization
Mathlib References
MvPolynomial.instCommRingMvPolynomial - Similar instance in Mathlib
Success Criteria
Tags
phase-1
api-completeness
multivariate-polynomials
ring-structure
blocked (circular dependency)
architecture (may require file restructuring)
Implement
CommRinginstance forCMvPolynomialSummary
Implement the
CommRinginstance forCMvPolynomial, extending theCommSemiringstructure with subtraction. This is currently blocked by circular dependency issues.Context
Part of Phase 1: Foundation Completion (API completeness) as outlined in
ROADMAP.mdline 59. TheCommSemiringinstance is defined inMvPolyEquiv.lean, but we cannot import it due to circular dependencies.What to Implement
instance {n : ℕ} {R : Type} [CommRing R] [BEq R] [LawfulBEq R] : CommRing (CMvPolynomial n R)CommSemiringstructure with subtractionCompPoly/Multivariate/CMvPolynomial.leanlines 253-277sorrydue to circular dependencyDependencies
CommSemiringinstance (defined inMvPolyEquiv.lean, but circular dependency prevents import)NegandSuboperations (need to verify these exist inLawful.lean)Implementation Notes
MvPolyEquiv.leanimportsCMvPolynomial.lean, so we cannot importMvPolyEquiv.leanto get theCommSemiringinstanceCommSemiringinstance to a separate file that both can importNegandSuboperations exist inLawful.leanFields to Implement
All fields currently have
sorry:add_assoc,zero_add,add_zeronsmul,nsmul_zero,nsmul_succadd_commleft_distrib,right_distribzero_mul,mul_zeromul_assoc,one_mul,mul_onenpow,npow_zero,npow_succzsmul,zsmul_zero',zsmul_succ',zsmul_neg'neg_add_cancelmul_commRelated Issues
MvPolyEquiv.leanMathlib References
MvPolynomial.instCommRingMvPolynomial- Similar instance in MathlibSuccess Criteria
CommRinginstance is implemented and typecheckssorrys)NegandSuboperations are verified to existTags
phase-1api-completenessmultivariate-polynomialsring-structureblocked(circular dependency)architecture(may require file restructuring)