This file summaries what has been done in each branch of the experiments on HB (available in a fork of the hierarchy-builder repository.
proto-coercion:
elaborate-skeleton
to fill in the holessort
projection as an elpi coercion when there is no coercion targetcoercion-tc:
done_tc := trivial || apply _ || done
done_tc
axioms_
in Prop
whenever every field is in Prop
declare-auto-infer-params-abbrev
and mk-infer
are, but they show up in the diff. They are not used, so they should be ignored and removed. Fun fact, they cause an anomaly when importing structures
.coercion-tcwp:
solve-all-with
to repeat solving the main holes of a term until no hole remainssimpl-tc-instance
: precompiles an instance (when an argument is a structure, we cut it into sort and class) to give to elpi’s typeclass solverHB.flush
: we want to declare some clauses in the same elpi runtime as the declaration of the predicate, which is not allowed, so we register the clauses and HB.flush accumulates them. N.B. we also postpone the building of the clausesS.sort _
and on anything using information from the context.hb-CS-db-for
S.sort
and S.class
in elpi’s canonical structure inference algorithmiter_exact
that iterates exact
over the proof contextprotowb
solve-all-with
to fill the holesprint_goal
and print_context
wbold
sort
projection as an elpi coercion when there is no coercion targetaxioms_
as a typeclass and Axioms_
as an instance in Coqaxioms_
in Prop
whenever every field is in Prop
tc-any
done_tc := trivial || apply _ || done
done_tc
wb
term->cs-patterns
to go under the lambdasHB.canonical_instances
: prints the contents of our db of cs instances