Jasmin Blanchette
2015-03-29 18:34:34 UTC
Hi all,
In private discussion with Tobias, René T., and Chris S., we agreed that the current syntax for (multiplicity-aware) multiset inclusion and the multiset (Dershowitz-Manna) ordering is confusing.
Focusing on the strict operators, the current situation is
< and ⊂ for multiset inclusion
<# and ⊂# for the multiset ordering
Our proposal:
< for the multiset ordering
<# and ⊂# for subset with multiplicities
(and analogously for the nonstrict operators). Apart from being less confusing (in our opinion), the new syntax would ensure the nice multiset ordering is used by the “ord” type class, which would be useful to some of us. Indeed if < is a linear order on 'a, with this change so would < be on multisets, or on multisets of multisets, etc.
Because the proposal is essentially a swapping (except for ⊂, which is no longer assigned), we would need to proceed in two steps.
First step (for Isabelle2015):
< and ⊂ for multiset inclusion
#<# and #⊂# for the multiset ordering
The symbols “#<#” and “#⊂#” are ugly, but they would vanish with the expected Isabelle2016 release, at which point our proposal would be fully implemented. [*]
Let us know if you have strong opinions on this, ideally as soon as possible, since we soon have to slow down development toward the next release.
Cheers,
Jasmin
[*] For isabelle-dev readers: In the Isabelle repository, the ugly symbols would appear in the coming days and vanish soon after the Isabelle2015 release.
In private discussion with Tobias, René T., and Chris S., we agreed that the current syntax for (multiplicity-aware) multiset inclusion and the multiset (Dershowitz-Manna) ordering is confusing.
Focusing on the strict operators, the current situation is
< and ⊂ for multiset inclusion
<# and ⊂# for the multiset ordering
Our proposal:
< for the multiset ordering
<# and ⊂# for subset with multiplicities
(and analogously for the nonstrict operators). Apart from being less confusing (in our opinion), the new syntax would ensure the nice multiset ordering is used by the “ord” type class, which would be useful to some of us. Indeed if < is a linear order on 'a, with this change so would < be on multisets, or on multisets of multisets, etc.
Because the proposal is essentially a swapping (except for ⊂, which is no longer assigned), we would need to proceed in two steps.
First step (for Isabelle2015):
< and ⊂ for multiset inclusion
#<# and #⊂# for the multiset ordering
The symbols “#<#” and “#⊂#” are ugly, but they would vanish with the expected Isabelle2016 release, at which point our proposal would be fully implemented. [*]
Let us know if you have strong opinions on this, ideally as soon as possible, since we soon have to slow down development toward the next release.
Cheers,
Jasmin
[*] For isabelle-dev readers: In the Isabelle repository, the ugly symbols would appear in the coming days and vanish soon after the Isabelle2015 release.