[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [tlaplus] Creating function sets lazily
- From: tlaplus-google-group@xxxxxxxxxxx
- Date: Wed, 23 Feb 2022 10:38:56 -0800
- Ironport-data: A9a23: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
- Ironport-hdrordr: A9a23:rzdOG6D3X3hZZH/lHej0sceALOsnbusQ8zAXPh9KJW0sTiXIra 3e5cjziyWf+VAssRYb6K690ci7MAzhHPtOjrX5Uo3SLzUO1FHYUL2KqLGStwEJ9UXFh65gPY kJSdk+NDSyNyk2sS7CiDPIXerIueP3s5xBMIzlvj1QpH9RGtZdBnZCe3em+xZNNUJ77PMCff L2l6433EvcRZkOVLXAOpBGZZmwmzSsruOvXfcoPX8aAWK1/EOVAdDBYm2lNtZ3aUIr/V7gyw j4es7CiJlKA5qAu1DhPqPonvdrcNaL8KoLOCR94fJlXAkEQzzYBvUHZ5Sy+AotqOXqwlcnmt vBrlMBOIBc8HXMZwiO0FfQ5zU=
- Ironport-sdr: 9cvJuDM7Plc9HGLPBHMuJH0wfvjQSVXw+3a1PLmA9MdFSkiCHm+sZnQaKEZnEgR5Wx1OaW5yx5 f5kTNKJds55Olskf9bRUABx5v4oEB5xcYx7OAiPSaqKmptNuG1Xd08/a/62zaCc468MDJvle0B 4TI+dN6Ysg+AAxt5RB0wCezlfLEiN2f/Fc145FQ592kV0ap2Ox+CGzdtF6rQR7CFVE3/Cl9hfP sYGBf880NBVeDUbOhHBmVZJnkpllSSGfTS+g9aWczi3Z8QlxUTM7fieDqoc9mOY7Be9SvxMrce 6kVPAunz79XHOpjigRgCvlQW
- References: <aa184e59-2e0c-44d9-a2c3-ea631681edean@googlegroups.com> <B7126745-9C62-44D7-868E-D439C81331CD@gmail.com>
Hi,
the definition of this hash function maps a universe of six elements to 2^6 bits. Unless this is intentional, you could, e.g., use the identity hash function [ s \in AllowedStrings |-> s ], which is also a perfect hash function. For readers, assume that hash is injective.
Anyway, to expand on Stephan's solution, below is a definition that TLC evaluates quickly. You can use it to define the CONSTANT hash or re-define the original operator hash:
EXTENDS Randomization, FiniteSets
[...]
SomeHash ==
\* Run TLC with the same -fp and -seed for RandomSubset to pick the same subset.
CHOOSE f \in [ AllowedStrings ->
RandomSubset( Cardinality(AllowedStrings), BitString ) ]:
IsInjective(f)
Markus
> On Feb 22, 2022, at 11:18 PM, Stephan Merz <stephan.merz@xxxxxxxxx> wrote:
>
> As long as the CHOOSE operator only occurs in constant definitions as in this example, you may consider replacing hash by a constant parameter and write
>
> CONSTANT hash
> ASSUME hash \in [AllowedStrings -> BitString] /\ IsInjective(hash)
>
> You'll have to provide a hash function in the model, but anyway TLC only checks the spec for one fixed hash function even with the definition. Evaluating the ASSUME clause should take negligible time.
--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+unsubscribe@xxxxxxxxxxxxxxxx.
To view this discussion on the web visit https://groups.google.com/d/msgid/tlaplus/37C102CD-B2FE-4299-83B8-4097611024A0%40lemmster.de.