Closed kris-brown closed 8 months ago
Attention: 6 lines
in your changes are missing coverage. Please review.
Comparison is base (
5bbd879
) 95.96% compared to head (2cf56e3
) 96.61%.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
@kris-brown let's get the codecov up on this, and I'll also try to drop a review soon.
thanks, all good points - hopefully all are addressed now!
There are certain 'derived types' which can in principle be constructed in any GAT but are tedious to do so. Firstly we have equality types, which are witness that two terms are equal. We can implicitly have equations in GAT contexts between generators, but not between general terms. Secondly we have dependent record types, which we call structs.
This PR provides support for directly declaring structs in a theory (which is sugar for a term constructor to make the struct, a type constructor for the type of struct, and projection map term constructors + various expected axioms) and adding equations between terms as arguments to term constructors. The theory of a category with pushouts demonstrates both of these features.
This PR also creates "NonStdLib", which is not exported by GATlab. It's important to distinguish the theories / models which are meant for external consumption (esp. by Catlab) from those which exist purely for testing or pedagogical purposes. (For example, the toy implementation of pushouts in FinSet isn't intended to be efficient.)
Some future work:
strict=true
should check that the equation arguments (as well as implicit equations) for a theory hold.