AlgebraicJulia/Catlab.jl

Sketches via data migrations

KevinDCarlson opened this issue · 0 comments

We should be able to upgrade @present, or maybe write a new @present_schema to let you write something like

Par = @present_schema begin
X,Y::Ob
f,g::X -> Y
XY = @product X Y
E = @join x::X; y::Y; ff:(x->y)::f; gg:(x->y)::g
end

which will actually generate two schemas, Par and, say, Par_full, where Par only has X,Y,f,g while Par_full also has XY and E together with the components of their limit cones, as well constructing a DataMigration from Par to Par_full that's the identity on Par and literally sends XY to @product X Y and so on. Then when the user instantiates Par, Catlab does the instantiation and the migration to Par_full, and voila, you've got sketch-schemas!