Zulip Chat Archive

Stream: new members

Topic: reflexive transitive closure


Huỳnh Trần Khanh (Jun 04 2021 at 15:20):

what does that mean? I saw that word in the operational semantics lean file in the logical verification repo

and why is there a separate *=> operator in addition to the => operator?

Huỳnh Trần Khanh (Jun 04 2021 at 15:21):

https://github.com/blanchette/logical_verification_2020/blob/master/lean/love08_operational_semantics_demo.lean

Mario Carneiro (Jun 04 2021 at 15:23):

The star on a relation symbol usually means the reflexive transitive closure of the relation without the star. So if -> is a relation then ->* is the reflexive transitive closure of R

Mario Carneiro (Jun 04 2021 at 15:24):

The reflexive transitive closure is, as the name implies, the closure of a relation under reflexivity and transitivity. Concretely, that means that x R* y if there exists a finite sequence x = z0 R z1 R ... R zn = y

Mario Carneiro (Jun 04 2021 at 15:25):

in particular the sequence is allowed to be empty, so that x R* x

Mario Carneiro (Jun 04 2021 at 15:25):

i.e. it is reflexive

Mario Carneiro (Jun 04 2021 at 15:26):

and it is transitive because if you have two such chains of R-relations you can append them to get a longer chain, so x R* y R* z implies x R* z

Mario Carneiro (Jun 04 2021 at 15:26):

mathlib has a definition of the reflexive transitive closure at docs#relation.refl_trans_gen


Last updated: Dec 20 2023 at 11:08 UTC