Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
8ab960b
splitting vis nodes into two transitions: wip on the transition theory
YaZko Oct 23, 2025
4545e95
inversion of bind transitions ok
YaZko Oct 23, 2025
bd94505
bunch of lemmas about weak reductions must be duplicated. Getting close
YaZko Oct 23, 2025
f4a9204
Finished trans, without the ltac
YaZko Oct 24, 2025
798b082
Fixed upto bind
YaZko Oct 27, 2025
4dedeef
Iterating on the label relation interface
YaZko Oct 29, 2025
e6666e0
Enforcing the shape of relations from the very definition of the simu…
YaZko Oct 29, 2025
f2cdc10
pushed back to upto bind with new setup
YaZko Oct 29, 2025
850ca88
The family of bind lemmas. Need to think about the proper instance no…
YaZko Oct 30, 2025
2db8b97
Progress in reestablishing the metatheory, trying to simplify on the …
YaZko Oct 30, 2025
0de205c
Fixed all backward lemmas
YaZko Oct 31, 2025
90f8bab
Some tidying
YaZko Oct 31, 2025
7a32335
Finished strong simulation
YaZko Oct 31, 2025
7b1ca0e
Adapting and pulling out the monotone condition from cssim
YaZko Oct 31, 2025
6fe6f55
Pulled out not_stuck predicate, adapted complete simulation down to u…
YaZko Nov 3, 2025
15d3dfd
minor reformulation. Quite positive there's a stronger up-to bind val…
YaZko Nov 3, 2025
df61b3f
checkpoint
YaZko Nov 3, 2025
35da3c6
Finished complete simulations, but mirrored a lot strong simulations,…
YaZko Nov 3, 2025
40fc248
quick setup for symmetric
YaZko Nov 5, 2025
c878904
Better tactics, better instances
YaZko Nov 7, 2025
302f8c2
equivalence upto for sb
YaZko Nov 7, 2025
0258802
Parameterization of Seq by a value relation
YaZko Nov 14, 2025
2c6b639
Merge branch 'dev' into askrcv
Chobbes Nov 18, 2025
8276517
WIP
YaZko Apr 15, 2026
2816789
Merge branch 'askrcv' of github.com:vellvm/ctrees into askrcv
YaZko Apr 15, 2026
8420422
Finished proof rules. Not the worst state, but some thought should si…
YaZko Apr 16, 2026
01729d3
elementary laws
YaZko Apr 16, 2026
2f25152
Incompatibility lemmas and a painful fix to tactics
YaZko Apr 16, 2026
87ed644
Finished sbisim
YaZko Apr 17, 2026
7d5ee4d
Promoting the draft to main, keeping the old one for review of changes
YaZko Apr 17, 2026
46a4523
Automate working with labels
YaZko Apr 17, 2026
2bb6f9e
Capitalization
YaZko Apr 17, 2026
b0f721f
Epsilon, might be necessary to revisit it to prettify things a bit..
YaZko Apr 17, 2026
9d1cf9b
A note
rogerburtonpatel Jun 18, 2026
730b96e
Changed trans_alt, ssimalt, updated most lemmas in those files
rogerburtonpatel Jun 25, 2026
701681c
Equivalence between old and new trans.
rogerburtonpatel Jul 6, 2026
b9cec75
Fixed and finished SSimAlt
rogerburtonpatel Jul 10, 2026
9fb0cf6
Fixed Pure.v
rogerburtonpatel Jul 10, 2026
7b8ff80
Added monauto for experiements
rogerburtonpatel Jul 10, 2026
a7a1232
Moved some items, added tower induction
rogerburtonpatel Jul 10, 2026
f0ad07e
SBisimAlt for review.
rogerburtonpatel Jul 10, 2026
5c06ffd
Fixed bind in SBisimAlt
rogerburtonpatel Jul 15, 2026
e19ac79
Fixed bind in SSimAlt
rogerburtonpatel Jul 15, 2026
ca57c2a
nits from meeting
YaZko Jul 15, 2026
d37b30f
mon instance
YaZko Jul 15, 2026
c1a53b5
Rm some intermediate ss defs
rogerburtonpatel Jul 15, 2026
bce13f8
Merge branch 'askrcv' of github.com:vellvm/ctrees into askrcv
rogerburtonpatel Jul 15, 2026
053cb7a
Push lrel under ss' mon
rogerburtonpatel Jul 15, 2026
19810c5
Progress on global fixes to SSimAlt
rogerburtonpatel Jul 15, 2026
10fc3ee
More type fixes
rogerburtonpatel Jul 16, 2026
207648d
Revert ssim to before
rogerburtonpatel Jul 16, 2026
136e68f
Lots of equivalences, need cleaning
rogerburtonpatel Jul 25, 2026
ad52ae5
Factored out Estar
rogerburtonpatel Jul 26, 2026
5bc692b
Cleaned SSimAlt, removed update_val_rel, documented.
rogerburtonpatel Jul 28, 2026
c09362f
Types under sb' for bind chain argument. Now fixing files.
rogerburtonpatel Jul 30, 2026
16dbf7c
Done up to up to bind, needs some renaming. removing uvr.
rogerburtonpatel Jul 30, 2026
f7aa35a
Minor fix to proof legibility
rogerburtonpatel Jul 31, 2026
8723c74
finished functional draft of sbisimalt.v. onto tests.
rogerburtonpatel Jul 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ _build
*~
.lia.cache
.aux
rocq-ctree.opam
52 changes: 52 additions & 0 deletions rocq-ctree.opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# This file is generated by dune, edit dune-project instead
opam-version: "2.0"
version: "2.0-dev"
synopsis:
"Library for representing recursive, non-deterministic and impure programs with equational reasoning"
maintainer: ["Yannick Zakowski"]
authors: [
"Nicolas Chappe"
"Paul He"
"Ludovic Henrio"
"Yannick Zakowski"
"Steve Zdancewic"
]
license: "MIT"
tags: [
"category:CS/Semantics and Compilation/Semantics"
"category:CS/Concurrency/Theory of concurrent systems"
"keyword:simulation"
"keyword:bisimilarity"
"keyword:coinduction up-to"
"keyword:process algebra"
"keyword:cooperative multithreading"
"logpath:CTree"
]
homepage: "https://github.com/vellvm/ctrees"
bug-reports: "https://github.com/vellvm/ctrees/issues"
depends: [
"dune" {>= "3.8"}
"rocq-core" {>= "9.0"}
"rocq-stdlib" {>= "9.0"}
"coq-ext-lib" {>= "0.11.3"}
"rocq-coinduction" {>= "1.21"}
"rocq-relation-algebra" {>= "1.8.0"}
"rocq-equations" {>= "1.3.1"}
"coq-itree" {>= "5.0"}
"odoc" {with-doc}
]
build: [
["dune" "subst"] {dev}
[
"dune"
"build"
"-p"
name
"-j"
jobs
"@install"
"@runtest" {with-test}
"@doc" {with-doc}
]
]
dev-repo: "git+https://github.com/vellvm/ctrees.git"
4 changes: 3 additions & 1 deletion theories/CTree.v
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ From ITree Require Export
Indexed.Function
Indexed.Sum.

From CTree.Utils Require Export
Utils.

From CTree.Core Require Export
Utils
Index
CTreeDefinitions.

5 changes: 3 additions & 2 deletions theories/Core/CTreeDefinitions.v
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ br.

From ITree Require Import Basics.Basics Core.Subevent Indexed.Sum.

From CTree Require Import
Core.Utils Core.Index.
From CTree Require Export
Utils.Utils.
From CTree Require Import Core.Index.

From ExtLib Require Import
Structures.Functor
Expand Down
2 changes: 1 addition & 1 deletion theories/Core/Index.v
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
From ITree Require Import Basics Indexed.Sum.
From CTree Require Import Core.Utils.
From CTree Require Import Utils.Utils.

Section Index.

Expand Down
36 changes: 18 additions & 18 deletions theories/Eq.v
Original file line number Diff line number Diff line change
Expand Up @@ -67,23 +67,23 @@ The upto [Vis] context principle for [sbisim]
|*)
(* #[global] Tactic Notation "upto_vis" := __upto_vis_sbisim. *)

(*|
The upto [bind] context principle for [equ] and [sbisim] ---
the same tactic covers both cases, whether in front of a [gfp], [t _] or [bt _].
The three variants are:
- [upto_bind]: leave you with both proof obligations, introducing an evar for the intermediate relation in the case of [equ]
- [upto_bind_eq]: meant to be use when the prefixes of the computations
are identical: assumes [reflexivity] will solve the first goal, and proceed to substitute the equality
- [upto_bind with SS]: for [equ], provides explicitly the intermediate relation
|*)
#[global] Tactic Notation "upto_bind" :=
__eupto_bind_equ || __eupto_bind_sbisim.

#[global] Tactic Notation "upto_bind_eq" :=
__upto_bind_equ_eq || __upto_bind_sbisim_eq.

#[global] Tactic Notation "upto_bind" "with" uconstr(SS) :=
__upto_bind_equ SS || __upto_bind_sbisim SS.
(* (*| *)
(* The upto [bind] context principle for [equ] and [sbisim] --- *)
(* the same tactic covers both cases, whether in front of a [gfp], [t _] or [bt _]. *)
(* The three variants are: *)
(* - [upto_bind]: leave you with both proof obligations, introducing an evar for the intermediate relation in the case of [equ] *)
(* - [upto_bind_eq]: meant to be use when the prefixes of the computations *)
(* are identical: assumes [reflexivity] will solve the first goal, and proceed to substitute the equality *)
(* - [upto_bind with SS]: for [equ], provides explicitly the intermediate relation *)
(* |*) *)
(* #[global] Tactic Notation "upto_bind" := *)
(* __eupto_bind_equ || __eupto_bind_sbisim. *)

(* #[global] Tactic Notation "upto_bind_eq" := *)
(* __upto_bind_equ_eq || __upto_bind_sbisim_eq. *)

(* #[global] Tactic Notation "upto_bind" "with" uconstr(SS) := *)
(* __upto_bind_equ SS || __upto_bind_sbisim SS. *)

(*|
Weakens equalities into respectively [equ] and [sbisim] equations ---
Expand All @@ -96,7 +96,7 @@ Ltac eq2equ H :=

Ltac eq2sb H :=
match type of H with
| ?u = ?t => let eq := fresh "EQ" in assert (eq : u ~ t) by (rewrite H; reflexivity); clear H
| ?u = ?t => let eq := fresh "EQ" in assert (eq : u t) by (rewrite H; reflexivity); clear H
end.

#[global] Opaque wtrans.
Loading
Loading