Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revision of structure theorems (3) #4377

Open
wants to merge 24 commits into
base: develop
Choose a base branch
from

Conversation

avekens
Copy link
Contributor

@avekens avekens commented Nov 8, 2024

As discussed in issue #3235, the new usage of the definitions df-* for slots in extensible structures is discouraged now. It was possible to replace most of the former usages by new/existing theorems not depending on the hard-coded values for the indices.
For this, new auxiliary theorems (*ndxn*, slots*) were provided. There are 40 of these auxiliary theorems in set.mm now, 26 of them are used more than once (and therefore surely pay off). This number is far less then the maximum 190 (number of proper pairs of numbers 1 to 20, which are currently used as slot indices).

As a result, the usage of the definitions df-* could be reduced from 159 to 39 (the OLD theorems excluded): except df-base, df-plusg and df-sca, each definition is only used by the two basic theorems *id and *ndx now (df-base is used by ~baseval and ~bj-endbase, df-plusg by ~grpstr and ~bj-endcomp, and df-sca by ~bj-isrvec additionally - the ~bj-* theorems can and should be revised later).

As a side effect, the number of usages of the *ndx theorems could be reduced from 141 to 103 (not counting the OLD theorems and the auxiliary theorems *ndxn*, *ndxlt*, *ndxnn, slots*). This is a first step in direction of the second part of issue #3235, to reduce and discourage the usage of the *ndx theorems (outside of subsection 7.1.2).

I commited the changes regarding each definition separately, so that a detailed review should be done commit by commit.

* comment of ~strfvn revised (fixed integer -> index; Note -> Hint)
* ~setsidvald revised (to make it more index-independent)
* Usage of ~setsidvald in ~ressval3d adjusted (proof shortened, independent of ~df-base now)
* ~basndxelwund extracted from proof of ~1strwun (index-.independent)
* proof of ~1strwun shortended (and made index-independent)
* ~wunres revised (not using df-base anymore)
* ~2strstr, ~grpstr discouraged
* ~2strstr1 proof shortened
* ~plusgndxnn, ~basendxltplusgndx added, ~basendxnplusgndx proof shortened
* ~grpstrnd added; ~grpbase and ~grpplusg revised (not depending on ~df-plusg anymore)
* ~tsetndxnplusgndx, ~plendxnplusgndx added
*  ~oppglem replaced by more general ~setsplusg
* proofs of ~oppgbas, ~oppgtset, ~oppgle revised
* ~scandxnplusgndx, ~dsndxnplusgndx added
* ~mgplem discouraged, replaced by more general ~setsplusg
* proofs of ~mgpbas, ~mgpscat, ~mgptset, ~mgpds revised
* proof of ~mgpress shortened (and not depending on ~plusgndx and ~basendx anymore)
* ~strndxid discouraged, because it requires hard-coded indices (~strfvnd should be used instead)
* new theoems  ~vscandxnplusgndx and ~vscandxnscandx extracted from proofs
* proofs of ~oppcbas, ~rescbas, ~estrreslem1, ~rmodislmod and ~edgfndxid  shortend (independet of *ndx theorems and definitions df-* now)
* Usage of df-unif discouraged
* new theorems ~unifndxnn, ~basendxltunifndx, ~unifndxntsetndx  extracted from proof of ~tuslem
* proof of ~unifndxnbasendx, ~tuslem shortened

Additional changes:
* proofs of ~wunress, ~basendxnmulrndx, ~slotsbhcdif  shortened (independent of ~df-base)
* Usage of df-ds discouraged
* new theorems ~scandxnmulrndx, ~vscandxnmulrndx, ~ipndxnplusgndx, ~ipndxnmulrndx, ~slotstnscsi , ~dsndxnn, ~basendxltdsndxn, ~dsndxntsetndx, ~slotsdnscsi, ~slotsinbpsd, ~slotslnbpsd extracted from proof of ~mgpsca, ~rmodislmod, ~sralem, ~tmslem, ~tngds, ~ttglem
* proof of ~dsndxnbasendx, ~tngds shortened
* ~sralem, ~srabase, ~sraaddg, ~sramulr, ~sratset, ~srads, ~cchhllem revised
* ~tmslem, ~ttglem, ~ttgbas, ~ttgplusg, ~ttgvsca, ~ttgds revised

Additional changes:
* proofs of ~wunress, ~basendxnmulrndx, ~slotsbhcdif shortened (independent of ~df-base)
* Usage of df-ple and df-edgf discouraged
* Usage of df-itv and df-kng discouraged
* new theorems ~plendxnn, ~basendxltplendx extracted from proof of ~isposix
* proof of ~plendxnbasendx, ~isposix, ~baseltedgf, ~iedgval0 shortened
* new slot numbers for df-mfsh and df-mevl
* Usage of df-ip discouraged
* new theorems ~tsetndxnmulrndx, ~dsndxnmulrndx, added
* ~tnglem, ~tngbas, ~tngplusg, ~tngmulr, ~tngsca, ~tngvsca, ~tngip revised

Other changes:
* fveqprc (extracted from ~zlmlem, to be used in the future)
* Usage of df-tset discouraged
* Usage of ~2strbas, ~2strop discouraged (only used by OLD theorems now)
* new theorems ~tsetndxnn, ~basendxlttsetndx , added
* proof of ~tsetndxnbasendx, ~nrgtrg   shortened
* ~eltpsg, ~indistpsALT revised
* new theorem ~ oveqprc
* ~resvlem, ~resvbas, ~resvplusg, ~resvvsca, ~resvmulr revised
* proofs of ~mendplusgfval, ~mendmulrfval, ~mendsca, ~mendvscafval (no OLD versions)
* Usage of df-vsca discouraged
* new theorems ~plendxnmulrndx , ~plendxnvscandx , ~ plendxnscandx  extracted from proofs for ~opsrmulr, ~opsrvsca, ~opsrsca, ~opsrbaslem
* proof of ~psrvscafval shortened
* ~opsrbaslem, ~opsrbas, +opsrplusg, ~opsrmulr, ~opsrvsca, ~opsrsca revised
~mnringnmulrd, ~mnringbased, ~mnringaddgd, ~mnringscad , ~mnringvscad revised
*
* Usage of df-sca discouraged
* ~psr1sca2 , ~ply1sca2 revised
* Usage of df-mulr discouraged
* new theorems ~starvndxnplusgndx , ~starvndxnmulrndx extracted from proofs for ~hlhilslem , ~hlhilsbase , +hlhilsplus , ~hlhilsmul
* proof of ~zlmsca shortened
* ~zlmlem , ~zlmbas, +zlmplusg, ~zlmmulr  revised
* ~znbaslem , ~znbas2 , +znadd , ~znmul revised
* ~hlhilslem , ~hlhilsbase , +hlhilsplus , ~hlhilsmul revised
* Usage of df-plusg discouraged
* proof of ~frmdplusg shortened
* ~opprlem , ~opprbas , +oppradd,  revised/shortened
* proof of ~ply1plusgfvi revised
* Usage of df-base discouraged
* some *ndxn* theorems reordered
* ~basendxltdsndxn renamed ~basendxltdsndx
* ~slotsbaseefdif  renamed ~basendxnedgfndx
* proof of ~symgvalstruct shortened
* proofs of ~rlmscaf , ~ply1tmcl, ~ply1scltm, ~ply1sclf, ~ply1scl0, ~ply1scl1   revised
proofs shortened using ~oveqprc and ~fveqprc.
@avekens
Copy link
Contributor Author

avekens commented Nov 8, 2024

As a result, the usage of the definitions df-* could be reduced from 159 to 39 (the OLD theorems excluded): except df-base, df-plusg and df-sca, each definition is only used by the two basic theorems *id and *ndx now (df-base is used by ~baseval and ~bj-endbase, df-plusg by ~grpstr and ~bj-endcomp, and df-sca by ~bj-isrvec additionally - the ~bj-* theorems can and should be revised later).

~bj-endbase and ~bj-endcomp seem to be already revised accordingly meanwhile, so only ~bj-isrvec is left.

@digama0
Copy link
Member

digama0 commented Nov 8, 2024

I would like to push back a little on not ever making use of the slot numbers, because proving that a structure is well formed is done most efficiently by proving that its fields are ordered numerically. Not doing this causes the proof to go from O(n) to O(n^2) in size.

@avekens
Copy link
Contributor Author

avekens commented Nov 10, 2024

I would like to push back a little on not ever making use of the slot numbers, because proving that a structure is well formed is done most efficiently by proving that its fields are ordered numerically. Not doing this causes the proof to go from O(n) to O(n^2) in size.

Are you talking about the *str theorems, like ~catstr: { <. ( Base ` ndx ) , U >. , <. ( Hom ` ndx ) , H >. , <. ( comp ` ndx ) , .x. >. } Struct <. 1 , ; 1 5 >. ? The proofs for such theorems are based on ~strle* (and ~strleun), and these theorems require the indices to be ordered (actually to be positive integers). Such preconditions could be provided by theorems like ~basendxltplendx and ~plendxnn. I propose we continue the discussion about the *str theorems in issue #3235.

On the other hand, there are already theorems which must be proven by quadratically many inequalities of the form ( E ` ndx ) =/= ( F ` ndx ). See, for example, ~cnfldfun, which is just Fun CCfld, and since CCfld is a structure with 8 slots, the proof for ~cnfldfun requires (8 * (8 - 1)) / 2 = 28 inequalities of the form ( E ` ndx ) =/= ( F ` ndx ), and actually contains all of these inequalities. Many of them are provided already as separate theorems in this PR, so I assume the proof of ~cnfldfun can be massively shortened.

With my next PR, I will concentrate on theorems not being *str theorems, which can be revised not to use *ndx theorems directly (like ~cnfldfun). Additional candidates are ~ttgval and ~rescabs, which can be shortened using the mostly already existing theorems ndxndx.

set.mm Show resolved Hide resolved
set.mm Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants