Skip to content

Commit 4ab77e0

Browse files
authored
feat: Heterogeneous behavioural equivalences (#460)
Generalises current behavioural equivalences (bisimulation and weak variants, simulation, and trace equivalence) to states in different LTSs, rather than assuming that the states being compared are in the same LTS. The convenience of homogeneous relations is retained via abbreviations (e.g., `HomBisimilarity`) and backwards-compatible notation. The aim of this PR is to facilitate proving the correctness of compilers, where states usually are in different languages.
1 parent 5245717 commit 4ab77e0

File tree

9 files changed

+476
-421
lines changed

9 files changed

+476
-421
lines changed

Cslib/Foundations/Data/Relation.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ theorem WellFounded.iff_transGen : WellFounded (Relation.TransGen r) ↔ WellFou
3333

3434
namespace Relation
3535

36+
/-- The empty (heterogeneous) relation, which always returns `False`. -/
37+
@[nolint unusedArguments]
38+
def emptyHRelation {α : Sort u} {β : Sort v} (_ : α) (_ : β) := False
39+
3640
attribute [scoped grind] ReflGen TransGen ReflTransGen EqvGen CompRel
3741

3842
theorem ReflGen.to_eqvGen (h : ReflGen r a b) : EqvGen r a b := by

0 commit comments

Comments
 (0)