AXIOM: the scientific computation system
AXIOM: the scientific computation system
Enhancing the NUPRL proof development system and applying it to computational abstract algebra
Enhancing the NUPRL proof development system and applying it to computational abstract algebra
Typing algorithm in type theory with inheritance
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Implicit Coercions in Type Systems
TYPES '95 Selected papers from the International Workshop on Types for Proofs and Programs
A Constructive Proof of the Fundamental Theorem of Algebra without Using the Rationals
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Constructive Reals in Coq: Axioms and Categoricity
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
PVS: A Prototype Verification System
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
CADE-12 Proceedings of the 12th International Conference on Automated Deduction
Organizing Numerical Theories Using Axiomatic Type Classes
Journal of Automated Reasoning
Defining functions on equivalence classes
ACM Transactions on Computational Logic (TOCL)
Alternative Aggregates in Mizar
Calculemus '07 / MKM '07 Proceedings of the 14th symposium on Towards Mechanized Mathematical Assistants: 6th International Conference
Finite Groups Representation Theory with Coq
Calculemus '09/MKM '09 Proceedings of the 16th Symposium, 8th International Conference. Held as Part of CICM '09 on Intelligent Computer Mathematics
Coercive subtyping in lambda-free logical frameworks
Proceedings of the Fourth International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice
Packaging Mathematical Structures
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Invariants for the FoCaL language
Annals of Mathematics and Artificial Intelligence
A constructive formalization of the fundamental theorem of calculus
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
A formal quantifier elimination for algebraically closed fields
AISC'10/MKM'10/Calculemus'10 Proceedings of the 10th ASIC and 9th MKM international conference, and 17th Calculemus conference on Intelligent computer mathematics
Computing in coq with infinite algebraic data structures
AISC'10/MKM'10/Calculemus'10 Proceedings of the 10th ASIC and 9th MKM international conference, and 17th Calculemus conference on Intelligent computer mathematics
Effective homology of bicomplexes, formalized in Coq
Theoretical Computer Science
A design structure for higher order quotients
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Developing the algebraic hierarchy with type classes in coq
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Canonical structures for the working coq user
ITP'13 Proceedings of the 4th international conference on Interactive Theorem Proving
Hi-index | 0.00 |
We describe a framework of algebraic structures in the proof assistant Coq. We have developed this framework as part of the FTA project in Nijmegen, in which a constructive proof of the fundamental theorem of algebra has been formalized in Coq.The algebraic hierarchy that is described here is both abstract and structured. Structures like groups and rings are part of it in an abstract way, defining e.g. a ring as a tuple consisting of a group, a binary operation and a constant that together satisfy the properties of a ring. In this way, a ring automatically inherits the group properties of the additive subgroup. The algebraic hierarchy is formalized in Coq by applying a combination of labelled record types and coercions. In the labelled record types of Coq, one can use dependent types: the type of one label may depend on another label. This allows us to give a type to a dependent-typed tuple like 〈A, f, a〉, where A is a set, f an operation on A and a an element of A. Coercions are functions that are used implicitly (they are inferred by the type checker) and allow, for example, to use the structure A := 〈A, f, a〉 as a synonym for the carrier set A, as is often done in mathematical practice. Apart from the inheritance and reuse of properties, the algebraic hierarchy has proven very useful for reusing notations.